我有以下代码,编译器没有向我显示任何错误或警告消息。但虽然条件满足了,但并没有达到我想要的效果。
#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;
}
当我在 else 条件内写入 printf("Hello\n");
时,它不会停止写入。尽管在读取的文件列表中很快就满足了条件,但似乎根本没有输入 if 条件。
最佳答案
我没有测试它,但我认为问题是 fscanf 没有正确读取该行。您应该检查 fscanf 的返回值是否有 EOF/转换错误,而不是使用 feof 并依赖于读取操作的成功。
这个问题在这里:Using fscanf() using feof()似乎描述了同样的问题,并且有关 feof 的一些详细信息在该问题的第一个答案中给出:Why is “while ( !feof (file) )” always wrong? .
关于c - 尽管满足条件,但不输入 if 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870986/