我正在为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)今天早些时候。也可能有其他人。 –