为什么这段代码只返回我数据集中的每个其他坐标?

时间:2017-12-11 01:18:53

标签: c

我有以下数据集:

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

显然,此代码正在跳过其他所有行。为什么会这样?

1 个答案:

答案 0 :(得分:3)

您正在进行两次fscanf,但仅在最后打印。你应该从for循环中删除第二个fscanf