为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
猛跑小猪 2023-03-05 21:17:55
# 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

查看完整回答
反对 回复 2023-03-08
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

在文件时回车换行是,算两个位的,一个为'\r','\n'

查看完整回答
反对 回复 2023-03-08
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信