我試圖創建一個程序,要求鍵入一些東西,並檢查它是否是一個整數。如果它是一個整數,則打印「整數是...」。否則,打印「再試一次」並等待另一個輸入。但是,如果您鍵入字符,該程序會打印無限數量的「再次嘗試」。這裏的源代碼:檢查輸入程序卡在一個無限循環
#include <stdio.h>
#include <stdbool.h>
int main()
{
int inp;
bool t = 1;
printf("type an integer\n");
while (t) {
if (scanf("%i", &inp) == 1) {
printf("The integer is %i", inp);
t = 0;
} else {
printf("try again");
scanf("%i", &inp);
}
}
}
沒有讀取非數字輸入的代碼。加一些。否則,非數字輸入保留在'stdin'中。 – chux
如果你使用某種合理的空白約定,你更可能得到幫助。你有什麼是毛病。我編輯過它。 – Gene
您是否曾想過'scanf'會返回成功匹配並分配的輸入項的數量? – paul