# include <stdio.h>void main(){FILE *fp;int k,n ,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d %d %d\n",a[0],a[1],a[2]);fprintf(fp,"%d %d %d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d %d",&k,&n);printf("%d %d\n",k,n);//m=ftell(fp);printf("此时文件的指针为:");printf("%ld\n",ftell(fp));fscanf(fp,"%d %d",&k,&n);printf("%d %d\n",k,n);printf("此时文件的指针为:");printf("%ld\n",ftell(fp));fscanf(fp,"%d %d",&k,&n);printf("%d %d\n",k,n);printf("此时文件的指针为:");printf("%ld\n",ftell(fp));fclose(fp);}可是运行的结果为:3 8 12 (位移量问题)为什么是3 8 12 呢,第一个为什么成了3了,而第二次位移量怎么成了8了,相差了5,第三个位移量又成了12了,与上一个差了4,不明白,请高手指点!!谢谢
2 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
\n输出到文件实际上是 0D 0A 占2个字节
程序写入文件的字节是
31 20 32 20 33 0D 0A 34 20 35 20 35 0D 0A 共14个字节
第一次读入的时候 读入1 空格 2
文件指针移过3个字节 31 20 32
第二次读入的时候 读入 空格 3 换行 4
文件指针移过了5个字节
20 33 0D 0A 34
第三次读入的时候 读入 空格 5 空格 6
文件指针移过4个字节
20 35 20 36
- 2 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消