这是我的第一个问题,我希望这是一个明智的问题。在这里:
我使用一个非常简单的循环来读取文件中的值:
int i=0;
int cmp;
FILE *file = fopen(file_name,"rb");
while (cmp = fscanf(file,"%f %f %f %f %f", &Gr[i], &dr[i], &eta[i], &tau[i], &v[i]) != EOF)
{
printf("Prop=%0.4f %0.4f %0.4f %0.4f %0.4f\n%i\n%i\n", Gr[i], dr[i], eta[i], tau[i], v[i], EOF, cmp);
i++;
}
printf("EOF=%i,File state=%i\n",cmp, EOF);
fclose(file)
我一直在论坛周围搜索关于函数返回值的信息和fscanf,我发现fscanf返回成功匹配值的数量。然而,当循环执行时,cmp的值等于1,而不是5.我使用的样本文件只有4行5列,所以当i = 3时,while正确结束,但是当我打印时cmp的值为0而不是-1,这是EOF的所谓值。我正在尝试这个简单的片段,试图真正了解正在发生的事情。 附加代码的输出是:
Prop=-5.1300 1.1424 0.4855 1.4277 0.0578
EOF=-1,File state=1
Prop=-6.3712 1.0744 0.4082 1.3579 0.1188
EOF=-1,File state=1
Prop=-4.9538 1.4177 0.3038 1.1513 0.1428
EOF=-1,File state=1
Prop=-6.4335 1.6539 0.0863 1.8511 0.0741
EOF=-1,File state=1
File state=0, EOF=-1
问题起源于更大的代码,由于某种原因,fscanf开始从文件的最后一行开始读取。任何帮助将不胜感激。