我有一個非常簡單的代碼段,其中有一個做,而具有開關的情況下環路去如下:如果事故無限循環的錯誤輸入
do {
printf("Enter Choice\n");
scanf("%d", &choice);
switch(choice) {
case 1: printf("1 selected");
break;
case 2: printf("exit");
break;
default: printf("wrong input");
break;
}
} while (choice != 2);
在這一段代碼我輸入一個字符而不是一個數字,該程序無限循環,並且甚至不接受輸入。 我知道這是可以糾正,如果我進入開關罩前插入
if(isdigit(choice))
。但我的問題是爲什麼它首先發生。
它不應該轉到默認情況並再次要求輸入嗎?
我不明白'if(isdigit(choice))'是否可以解決這個問題,因爲'choice'是已經解釋過的整數輸入,而不是'char'。 – 2012-08-10 10:24:11
當你輸入的內容與格式規範不同時,你會遇到問題,換句話說不是,爲了得到這種情況,它必須是正確的格式。我會說接受一切作爲一個字符串。這樣就不會出現任何錯誤。然後,對輸入字符串進行檢查,根據需要進行轉換......等等...... – ChiefTwoPencils 2012-08-10 10:28:18