scanf()in while循环没有终止?

时间:2012-11-25 07:19:55

标签: c while-loop int scanf

我有一个while循环,它扫描一组输入整数。它扫描并打印所有数字,最后用“......”跳到下一行。但是,脚本不会:执行while循环并打印TEST。

例如,我输入: 3 44 62 1

它打印: 3 ...

44 ...

62 ...

1 ...

何时打印: 3 ...

44 ...

62 ...

1 ...

TEST

while(scanf("%d", &n) != -1) {
    x[i] = n;
    i++;

    printf("%d", n);
    printf("...\n");
}

printf("TEST");

我做错了什么?

1 个答案:

答案 0 :(得分:5)

  1. scanf("%d", &n) != 1错了。它应该是scanf("%d", &n) == 1
  2. 你期待循环结束只是因为你点击了输入?如上所述,只有当scanf由于到达输入文件的末尾而无法读取数字时,您的程序才会停止。如果您使用的是Unix,则可以通过按Ctrl-D从终端发出EOF信号。如果您使用的是Windows,则按Ctrl-Z Enter键。 (另外,不要依赖EOF为-1;它不可移植。)