Fgets игнорируется при вызове во второй раз - PullRequest
0 голосов
/ 02 октября 2019

У меня есть функция, которая возвращает истину или ложь, или повторные запросы на основе ввода пользователя. Который я извлекаю из 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 () в догадке, он запрашивает ввод и возвращает к главному, как и ожидалось, однако, как только он возвращается к основному, он печатает «Вы хотите играть снова», а затем сразу «Неверный»"еще до того, как я получил возможность ввести какой-либо новый ввод?

...