c - 尽管满足条件,但不输入 if 条件

标签 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;
}

当我在 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/

相关文章:

c - C 中的 mmap 用于文本文件

c - 有人可以告诉我我的错误吗?

java - 如果现有文件已存在,如何创建新文件?

c# - 如何通过 FTP 不断传入文件

c - GTK 2 gtk_widget_add_accelerator 错误 : ‘GDK_Z’ undeclared

c - AIX 上的函数指针编译错误

Linux 内核 : logging to a specific file

c - 在 windows 和 linux 上的 fopen 中使用 "r+"

java - C++ createFile(紧凑型闪存卡写入器)

澄清指针表示法