나는 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');
}
그것을 enter를 누르면 "\ 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)을 사용합니다. 다른 사람들도있을 것 같습니다. –