我試圖讓防禦性編程的輸入爲整數,但如果我輸入字符,程序將進入無限循環。 然後,我切換到有輸入作爲一個字符,但它做了兩次循環。一次用於錯誤的字符,一次用於行尾擊鍵。菜單上的防禦性編程。我應該輸入什麼類型的輸入?
有什麼辦法可以得到循環,只有一次?
代碼:
int main(int argc, char *argv[])
{
char choice='5';
while (choice != '1' && choice !='2' && choice !='3' && choice!='4' && choice!='0')
{
printf("Parakalw epilekste ena apo ta parakatw\n\n");
printf("1.\tKafe 1.5 euro\n");
printf("2.\tKafe me gala 1.8 euro\n");
printf("3.\tSokolata 2.1euro\n");
printf("4.\tSokolata me gala 2.4 euro\n");
printf("0.\tExodos\n\n");
printf("parakalw eisagete thn epilogh sas: ");
scanf("%c",&choice);
}
system("PAUSE");
return 0;
}
爲什麼不能像int n; ?scanf函數(「%d」,&n);' – Mikhail 2013-03-05 19:31:01
它進入一個無限循環當n =任意字符,而不是一個數量 – n17n 2013-03-05 19:34:24
@NikolaosTsouktakos:那是因爲scanf函數將無法讀取一個號碼,你的循環寫入的方式會不斷嘗試,使用相同的輸入,直到永遠。 – teppic 2013-03-05 19:44:38