Почему цикл if повторяется дважды, прежде чем запрашивать следующий ввод? - PullRequest
1 голос
/ 13 июня 2019

Я пишу программу на C, которая каждый раз генерирует случайный символ и сравнивает его с введенным пользователем символом.Пользователю предоставляется пять шансов угадать ответ.

Я также использовал scanf("%c",&ans) вместо getchar, но он также не работает.

    srand(time(NULL));
    char randomChar=rand()%('z'-'a'+1)+'a';
    printf("%c",randomChar);
    for(i=1;i<=5;++i){
        printf("Enter your guess:\n");
        ans=getchar();
        if(ans==randomChar){
            printf("Whoa!!Your guess was correct\n");
            break;
        }
        else{
            p=p-1;
            printf("Wrong guess,you have %d more chances\n",p);
            continue;
        }
    }

Вывод:


aEnter your guess:
p
Wrong guess,you have 4 more chances
Enter your guess:
Wrong guess,you have 3 more chances
Enter your guess:

1 Ответ

1 голос
/ 13 июня 2019

Заменить

ans=getchar();

на

scanf( " %c", &ans );

(обратите внимание на пробел перед спецификатором формата %c.)

getchar считывает также пробелы (например, символ новой строки, сохраненный в буфере после нажатия Enter).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...