使用scanf的输入读取挂起

时间:2016-12-03 14:07:35

标签: 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键,然后才会出现数字。

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

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

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

1 个答案:

答案 0 :(得分:4)

\n

中删除scanf()
scanf("%i", &num);

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

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

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