我有以下数据集:
0 1
0 3
1 1
2 3
<empty line>
我的目标是将这些点读成两个整数x和y。很明显,我不想读取文件末尾的空行,所以我编写了以下代码以避免这种情况。
#include <stdio.h>
#include <math.h>
int main() {
FILE *input;
int x, y;
const float r = 2;
input = fopen("coords.dat", "r");
for (;;) {
int nread = fscanf(input, "%i %i\n", &x, &y);
if (!(nread >= 1)) break;
fscanf(input, "%i %i\n", &x, &y);
printf("%i %i\n", x, y);
}
fclose(input);
}
基本上,如果一行是空白的,我就会脱离循环。我知道我的.dat文件末尾有一个空行。但是,我得到以下输出:
0 3
2 3
显然,此代码正在跳过其他所有行。为什么会这样?
答案 0 :(得分:3)
您正在进行两次fscanf,但仅在最后打印。你应该从for循环中删除第二个fscanf