2013-07-12 172 views
1

我是C編程的完整初學者,我有一個問題。我會帶一個簡單的代碼爲例:'printf'後跟'scanf'需要按ENTER鍵兩次才能接受輸入

#include <stdio.h> 

int main(void) 
{ 
    int x; 
    printf("Please type the number 10."); 
    scanf("%i\n", &x); 

    if (x == 10) 
     printf("Thank you!\n"); 


    return 0; 
} 

正如預期的那樣,當我編譯並運行這個程序,我的終端顯示消息:

"Please type the number 10." 

然後等待輸入,所以我輸入它要求的號碼(10),然後按輸入。問題是,我按ENTER一次後,它移動到一個新的行,並等待更多的輸入。只有輸入10並再次按下ENTER後,它纔會繼續(...顯示「Thank you!」)。

因此,我必須按輸入兩次才能接受我的輸入。有誰知道爲什麼發生這種情況?

+0

你確定這只是一個'printf'後會發生什麼? –

+5

更改爲'scanf(「%i」,&x);'(no \ n) – bengoesboom

回答

3

其實scanf不會發出提示,如果你包括比格式說明符以外的任何東西,那麼你必須不精確進入輸入這種方式,這就是爲什麼你需要按一次ENTER

更改此:

scanf("%i\n", &x); 
     //^
     // | remove extra \n 

這樣:

scanf("%i", &x); 
+0

@Grijesh Chauhan ..謝謝編輯:) – 0decimal0

+0

是的,我刪除了'\ n',它解決了問題。非常感謝! – user2577148

+0

既然我們在這裏學習,我想我可以稍微糾正你一下,幫助你。它是全心全意的,並非全心全意:) – user2577148

6

這是您致電scanf時的「\ n」。刪除並且scanf將在掃描您請求的整數值後返回。

注意:這與scanf調用之前有printf無關。

相關問題