2016-02-11 65 views
0

我的代碼炭我不能SCANF後數

#include <iostream> 

using namespace std; 

int main() 
{ 

    int number=0; 
    char choice; 


    // srand(time(0)); 

    printf("Number: "); 
    scanf("%d", &number); 


    printf("Character: "); 
    scanf("%c",&choice); 

} 

我可以鍵入數字,但在控制檯關閉,當我想輸入的字符,該怎麼辦?

+0

我不能在這裏插入庫,但它的工作原理。 printf在控制檯中顯示「Number:」,然後輸入我的自定義編號,但是在輸入控制檯後,控制檯結束了,但沒有給我添加字符的可能性。我用cout/cin,它工作,但printf/scanf不工作..爲什麼? – Sick654

+0

什麼*確切*你打字?我敢打賭,你正在輸入的內容與你所說的不同。 –

回答

4

我假設你的意思是:

scanf("%d", &number); 

但你真正的問題是你的

scanf("%c",&choice); 

正在讀取換行符(回車鍵),您的號碼後輸入。

因此改變:

scanf("%d", &number); 

要:

scanf("%d ", &number); /* note the space after %d */ 

「吸起來」 那換行。

更多信息:最%something符在scanf會跳過開頭的「空白」 (空格,製表符,換行符等)讀你想讓它之前的事情。 %c是該規則的例外。 scanf格式的空格也可以匹配任意類型的空格。

更多更多信息:許多程序員避開scanf以支持其他I/O方法,因爲難以有效且安全地使用它。

+2

每個新程序員在學習做控制檯IO時都會遇到一個問題。 –

+0

所以我掃描一個數字後,我不能掃描一個字符?如果我嘗試通過「C」而不是C++編程它?我不明白你的代碼,你是否修復了任何問題?或不能完成? – Sick654

+1

注意增加空格,然後閱讀關於爲什麼1空間很重要的「更多信息」 –