我有以下代码,编译器没有向我显示任何错误或警告消息。但是,虽然条件得到满足,但它并没有做我想做的事。
#include <stdio.h>
int main()
{
FILE *f,*g;
f = fopen("MPCORB_Distant.txt","r");
g = fopen("MPCORB_Distant_AvgKBOValues.txt","w");
float Nbr,H,G,Epoch,M,w,W,i,e,n,a,UP,Ref,Obs,Opp,Arc,rms,Pert1,Pert2,
Comp,Type,Name,LastObs;
float Res_a,Res_e,Res_i,Res_W,Res_w;
while(!feof(f))
{
fscanf(f,"%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f\n",
&Nbr,&H,&G,&Epoch,&M,&w,&W,&i,&e,&n,&a,&UP,&Ref,&Obs,&Opp,&Arc,&rms,&Pert1,
&Pert2,&Comp,&Type,&Name,&LastObs);
if ( a > 60 )
{
fprintf(g,"%f %f %f %f %f\n",a,e,i,W,w);
}
else
{
}
}
fclose(f);
fclose(g);
return 0;
}
当我在其他条件下写printf("Hello\n");
时,它不会停止写作。尽管条件在读取的文件列表中很快就完成了,但似乎根本没有输入if条件。
答案 0 :(得分:0)
我没有测试它,但我认为问题是fscanf无法正确读取线路。你应该检查fscanf的返回值是否有EOF /转换错误,而不是使用feof并依赖于读取操作的成功。
这里的问题:Using fscanf() using feof()似乎描述了同样的问题,并且在这个问题的第一个答案中给出了关于feof的一些细节:Why is “while ( !feof (file) )” always wrong?。