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

0 c int scanf while-loop

我有一个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");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

mel*_*ene 5

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

  • 如果你不在一行的开头,你也可以按Ctrl-D两次(这有趣的原因). (2认同)