2016-12-03 79 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

感謝工作!並且不適合尋找其他一些輸入方法(: –