程序为什么会输出这个结果

来源:百度知道 编辑:UC知道 时间:2024/05/20 10:09:54
D盘的txfile.txt文件数据如下:
12 36 25
14 25 32
程序如下:
#include"stdio.h"
main()
{
int a,b,c;
FILE * fptr;
fptr=fopen("D:\\txfile.txt","r");
if(fptr==NULL)
{
printf("Don't open file !\n");
}
else
{
while(!feof(fptr))
{
fscanf(fptr,"%d %d %d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
}
return 0;
}
输出结果为:
12,36,25
14,25,32
14,25,32
请问为什么会输出这样的结果呢?

程序没有问题,在我机器上测试正常,你再看看你的文件里面的数据是不是对的.

多看几遍书就知道了,特别是关于那个指针的,还有就是函数的。

应该是酱紫滴~
当程序开始读最后一行数据时
最后一行数字在文件里面是这样存的:14[空格]25[空格]32[回车]
然后,程序执行了一句 fscanf(fptr,"%d %d %d",&a,&b,&c);
此时,文件指针fptr指向了最后的回车符
没错吧?把数字全部读完了,就指向下一个字符,回车符也~
然后此时,程序判断feof(fptr)
肯定是否啦,还有个回车嘛,怎么会结束呢咧?
接下来呢,因为判断为还没结束嘛,就接下来继续执行
fscanf(fptr,"%d %d %d",&a,&b,&c);
呀~可惜文件确实没有数据了,跳过回车,读不到数据嘛
所以,三个变量abc就保持原来的值,没有被重写
然后就再输出一遍咯~

明否? :)