c - while 循环中的 scanf() 没有终止?

标签 c while-loop int scanf

我有一个 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;它不可移植。)

关于c - while 循环中的 scanf() 没有终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549102/

相关文章:

c++ - 仅使用一个#include-expression 一次包含多个头文件?

c - 解析文本文件的简单方法?

javascript - 计数高于平均水平

java - 循环剪贴板,仅第一次获取文本

php - 使用 while/foreach 构建复杂的表

python - python中的数字n和(n)有什么区别

c - "if an int can hold all values of the original type then the value is converted to int , else to unsigned int"——什么意思?

c - 十六进制的问题

c# - 从文件读取后将 Char 转换为 int

c - freebsd C crypt() 线程安全吗?