我正在編寫一個模擬Monty Hall Problem的命令行C程序,但我在我的代碼的特定部分遇到問題,程序只是簡單地提示用戶輸入他們想打開的數字門,它獲得輸入並確保它是有效的:爲什麼這個C程序在while循環後不工作?
printf("Please enter the door you would like to choose! (Door 1, 2 or 3)\n\nDoor ");
char init_input[255];
int selection;
int valid_input = 0;
while(valid_input == 0)
{
gets(init_input);
int len = strlen(init_input);
while(len != 1)
{
printf("Please choose either door 1, 2 or 3\n\n");
printf("Door ");
gets(init_input);
len = strlen(init_input);
}
int valid_input = 0;
char input = init_input[0];
switch(input)
{
case('1'):
{
selection = 1;
valid_input = 1;
printf("Door 1\n");
break;
}
case('2'):
{
selection = 2;
valid_input = 1;
printf("Door 2\n");
break;
}
case('3'):
{
selection = 3;
valid_input = 1;
printf("Door 3\n");
break;
}
default:
{
printf("\nPlease choose either door 1, 2 or 3\n\nDoor ");
break;
}
}
}
printf("\nYou chose Door %d, now I will reveal one of the doors that has a goat behind it:\n\n", selection);
程序運行正常,直到你輸入任何有效的門數:1,2或3,它不會崩潰,但一段時間後,不打印所需的輸出循環並繼續執行程序。但是,當我輸入一個有效的數字時,會打印出所選門的名稱,這表明它與switch語句無關。
爲什麼不直接輸入一個整數,然後進行驗證檢查,如果是1,2或3以外的值,則讓用戶再次輸入。 – Rndm 2012-07-14 06:27:53
我想使程序白癡證明 - 以便如果用戶輸入的東西以外的整數不會崩潰。 – Harry 2012-07-15 09:45:32