c-计算数据文件中的行数

  • 本文关键字:文件 计算 数据 feof
  • 更新时间 :
  • 英文 :


在这个代码片段中,我试图计算文件中包含的行数。数据被划分为7列和421行。然而,outmput的总数返回为422,这在多行中计数。为什么?我该如何避免这个问题?

我知道在(!Feof(inStr))时使用指令是错误的,但有人明确要求我使用它。

int valid = 0;
[...]
while(!feof(inStr)){
        fscanf(inStr," %c %f %f %f %f %f %d",&app1, &app2, &app3, &app4, &app5, &app6,&app7);
        valid++;
    }
    printf("%d",valid);

问题是,在尝试fscanf之后,但在增加行计数器之前,需要立即执行feof检查。否则,您将为eof递增它。

while(1){
    fscanf(inStr," %c %f %f %f %f %f %d",&app1, &app2, &app3, &app4, &app5, &app6,&app7);
    if (feof(inStr)) break;
    valid++;
}
printf("%d",valid);

当然,你也可以按照马丁·詹姆斯的建议,从结果中减去一。

不要循环while (!feof(...)),它不会像您预期的那样工作,因为EOF标志直到您尝试从文件末尾以外读取之后才会设置。相反,请使用例如while (fscanf(...) == 7)(在您的特定情况下)。

使用while (!feof(...))的问题是,它将循环一次到多次,这正是您遇到的问题。

相关内容

  • 没有找到相关文章

最新更新