问题补充说明:fq=(fopen("date.txt","r"));for(i=0;!feof(fq);i++) fscanf(fq,"%s %f %f\n",day[i].date,&day[i].boa,&day[i].mis);我这个文件data.txt开始是空的,但是读入的时候feof第一次循环还是做了,不明白,feof不是到文件末尾就停了吗?而且,当data.txt文件中有一次的保存结果的时候,循环还是只做一次,这是什么问题,求解?
即使文件是空验径汽吃良弱乱的,也要再读一次,feof函数值才会变为真。
因为只有读出所有的数据之后,再读一次,函数feof(fp)的返回值才为真。(请见《C语哥兴听构任松分作轴弱言好程序设计—从入门到进阶》营,人民邮电出版社,2011。)
示例:
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE*fp;
inta;
if((fp=fopen("c:\\number.txt","r"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
fscanf(fp,"%d",&a);
while杂剧事(!feof(fp))/*等价于while(feof(fp)==0)*/
{
printf("%d",a);
fscanf(fp,"%d",&a);
}
fclose(fp);
}
标签:C语言,fe,函数