0
我一直在研究一個需要整數輸入的程序,但是每次意外地輸入一個非整數時,scanf函數停止工作或陷入循環。使用scanf只能輸入整數?
這是什麼,我試圖做一個例子:
int n;
printf("please enter 0 or 1\n");
top:
scanf("%i",&n);
if(n == 0)
{
printf("you entered 0!\n");
}
if(n == 1)
{
printf("you entered 1!\n");
}
if(n != 0 && n != 1)
{
printf("please enter either 0 or 1.");
goto top;
}
第三,如果是,如果你沒有輸入正確的號碼發送給您回頂,但這並不信件工作和其他角色。 如果給出非整數輸入,您如何將它發送回頂端?
道奇它用'fgets'進入和應用'sscanf'並檢查它的返回值(研究手冊頁:scanf家族的函數返回值是什麼?)。如果你沒有得到你想要的,轉儲輸入字符串,並得到另一個。 –
「如果給出非整數輸入,你怎麼能把它發送回頂端?」 - >讀取非整數並首先將其扔掉。 – chux
您應該檢查'scanf()'的返回值以識別何時發生錯誤,例如輸入不是數字。當發生這種匹配失敗時,您必須從標準輸入中讀取至少一個字符 - scanf()目前正在窒息 - 否則它將保持在那裏以在下一次嘗試中造成麻煩。 –