使用fscanf时是否停止while循环



我遇到了这个问题:我有一个带有空格分隔的数据点的.txt文件,我使用fscanf获取这些数据点并将它们存储到一个浮点数组中。问题是,我还试图处理错误的输入(例如,12.3是有效的,但a.2、e、e.f、a.2等无效(,所以我设置了以下内容:

float data[20];
int count = 0;
FILE *fp;
fp = fopen(argv[1], "r");
while ((count < 20)) {
if fscanf(fp, "%f", &data[count]);
else {
data[count] = -1000;
}
}

目前,我对它进行了硬编码,以20个循环结束。但我需要它结束在文件中数据的末尾,该文件有11个值。目前,它正确地加载了这些值,但仍在继续循环。我尝试了EOF实现,但遇到了数据处理不好的问题。

我发现阅读fscanf文档总是有帮助的。它告诉我的是,它返回了三个值中的一个,(在你的情况下(。如果一个人的计划形成良好,就必须考虑到这三个值。

return 意思是
1 解析器能够在数据类型的限制内合理地解释和存储给定的一个值
0 给定格式字符串,这些字节没有意义
EOF 由于其他原因无法读取字符;它可能是文件的末尾

最新更新