尽管条件得到满足,但未进入if条件

时间:2015-01-09 23:31:35

标签: c fopen createfile

我有以下代码,编译器没有向我显示任何错误或警告消息。但是,虽然条件得到满足,但它并没有做我想做的事。

#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条件。

1 个答案:

答案 0 :(得分:0)

我没有测试它,但我认为问题是fscanf无法正确读取线路。你应该检查fscanf的返回值是否有EOF /转换错误,而不是使用feof并依赖于读取操作的成功。

这里的问题:Using fscanf() using feof()似乎描述了同样的问题,并且在这个问题的第一个答案中给出了关于feof的一些细节:Why is “while ( !feof (file) )” always wrong?