У меня есть функция, которая возвращает истину или ложь, или повторные запросы на основе ввода пользователя. Который я извлекаю из fgets.
BOOL yes()
{
char ans[4];
//need to store this somewhere
fgets(ans,sizeof ans,stdin);
if(strcasecmp(ans,"yes")== 0 ||strcasecmp(ans,"y") == 0){
return TRUE;
}
else if(strcasecmp(ans,"no")== 0 ||strcasecmp(ans,"n") == 0){
return FALSE;
}else{
printf("Invalid");
yes();
}
}
Этот цикл while выполняется, в то время как ответ возвращает true,
int main(){
do {
guess();
printf("\nDo you want to play again? (yes/no) >");
} while (yes() == TRUE);
}
Функция предположения также вызывает yes () следующим образом:
void guess(){
if(yes()){
return;
}
}
Когда я вызываю yes () в догадке, он запрашивает ввод и возвращает к главному, как и ожидалось, однако, как только он возвращается к основному, он печатает «Вы хотите играть снова», а затем сразу «Неверный»"еще до того, как я получил возможность ввести какой-либо новый ввод?