位移量结果为什么是这样的?求

# 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,不明白,请高手指点!!
谢谢



猛跑小猪
浏览 95回答 2
2回答

慕工程0101907

\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个字节&nbsp;&nbsp;20 33 0D 0A 34第三次读入的时候 读入 空格 5 空格 6文件指针移过4个字节20 35 20 36

Cats萌萌

在文件时回车换行是,算两个位的,一个为'\r','\n'
打开App,查看更多内容
随时随地看视频慕课网APP