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

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

例如,我输入:3 44 62 1

打印:3 ……

44 …

62 …

1 …

什么时候打印:3 ……

44 …

62 …

1 …

测试

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

我究竟做错了什么?

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