c - 使用 scanf 进行输入读取挂起

标签 c scanf

我正在用 C 语言编程,当我在 cmd 终端中运行程序时遇到问题。这是我使用的代码:

#include <stdio.h>

int main() {

    int num;

    printf("enter a number: ");
    scanf("%i\n", &num);

    for(int n = 1; n < num + 1; n++){
        printf("%i\n", n);
    }


    return 0;
}

一般来说,除了一件事之外,一切都按其应有的方式进行。 当我输入数字时,什么也没有发生。没有输出,直到我写下任何内容并按 Enter 键,然后才会出现数字。

这是它的屏幕截图。 这里输入数字(然后按 Enter 键)但没有任何反应:http://prntscr.com/deum9a

这就是我随机输入一些内容并弹出所有数字后的样子:http://prntscr.com/deumyn

如果有人知道如何解决这个问题,请告诉我(:

最佳答案

scanf() 中删除 \n

scanf("%i", &num);

当格​​式字符串中有空格字符时,scanf() 将忽略您输入的任意数量的空格,因此您执行的 ENTER 操作不会终止输入读取。基本上,您将被迫再次输入非空白字符才能完成scanf()调用。

通常,scanf() 被认为不利于输入读取。因此,考虑使用 fgets() 并使用 sscanf() 解析输入。

参见:Why does everyone say not to use scanf? What should I use instead?

关于c - 使用 scanf 进行输入读取挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287381/

相关文章:

c - 哈希算法的实现将字符串转换为数字

无法将字符放入 C 中的字符数组中

C 程序设计 - 空格在 scanf() 中的作用

c - Scanf 弄乱了我的字符数组?

c - 指针地址相乘

C - 继续陷入无限循环

c - break 语句在 else 语句中不起作用

c - 为什么不能在 C 中编写 scanf ("%.2lf", &a) ?

c - 将字符串放在 float 应该在的位置?

c - 如何使用 scanf() 读取包含许多列并跳过其中一些列的文件 (.txt)