我寫了一些C代碼,你可以通過輸入1或2來從答案中選擇,如果你輸入一個更高的數字,它會帶你回來選擇另一個數字就好了。但是,如果我嘗試輸入不是值或數字的內容,如字符串或字符,底部的錯誤消息將無限重複。當輸入任何其他字符時,如何讓我的代碼的行爲與輸入比1或2更高的數字相同?這裏我使用抽象的代碼:如何停止製作此C代碼循環?
#include <stdio.h>
int a;
int main(){
b:scanf("%d", &a);
if(a==1)
{
a=0;
}
if(a==2)
{
a=0;
}
else
{
a=0;
printf("\nERROR: Please try again.\n\n");
goto b;
}
}
編輯:顯然返回值仍然卡在scanf()時,它返回到它。我如何清除scanf()的返回值?
我會使用一個'while'循環這個,而不是goto方法的。然後只是從循環中斷開,或者設置一個標誌來決定是否繼續循環。 goto的合法使用案例遠遠少於合法用例。 – Carcigenicate
呃...後藤。呸。學習正確的方法來做到這一點*現在*,在爲時已晚之前。 –
如果你用'fgets'得到輸入,然後在輸入字符串中使用'sscanf',當用戶沒有輸入你需要的東西時,你可以忘記以前的輸入字符串並重試。 OTOH使用'scanf'時,任何被拒絕的輸入都將保留在輸入緩衝區中。 **總是**檢查'scanf'函數族的返回值(參見手冊頁瞭解其含義)。永遠不要認爲輸入數據是*好*。 –