我正在爲C創建一個簡單的Tic Tac Toe,這裏是我遇到問題的一個特殊功能。這應該讓用戶選擇'X'或'O',併爲最藝術作品。但是,如果我輸入了錯誤的符號,則會打印以下語句: 「無效的符號,請重新輸入:」兩次。爲什麼消息打印兩次?
爲什麼和如何我可以解決這個問題?
char assign(void)
{
char user;
printf("Would you like to be X or O (Enter your choice): ");
user=getchar();
while(user != 'X' && user != 'x' && user != 'O' && user != 'o')
{
printf("Invalid symbol, please re-enter: ");
user=getchar();
}
if(user == 'O' || user == 'o') return('O');
else if(user == 'X' || user == 'x') return('X');
}
它可能捕獲「\ n」字符,當你按回車。 – Lucas
[在while循環中使用getchar()]的可能重複](http://stackoverflow.com/questions/2549701/using-getchar-in-a-while-loop)。還有['while循環複製'printf()'兩次纔得到字符](http://stackoverflow.com/questions/17892383/while-loops-duplicates-printf-two-times-before-getting- to-getchar)今天早些時候。也可能有其他人。 –