2016-12-03 95 views
0

我在C编程,当我在cmd终端中运行程序时遇到问题。这里是我使用的代码:使用scanf挂起的输入读取

#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

如果有谁知道如何解决这一点,请告诉我(:

+0

scanf将在执行中,直到按下Enter键。输入号码后,你是否按下回车键?如果是,控制台显示什么?如果不是,那么它就是这样工作的。 –

回答

4

scanf()

scanf("%i", &num); 

取出\n当你有格式的空白字符字符串,scanf()将忽略您输入的任何数量的空格,因此您所做的ENTER不会终止输入读数。基本上,你将被迫输入非空白字符再次为了完成scanf()调用。

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

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

+0

感谢工作!并且不适合寻找其他一些输入方法(: –