Scanf не пропускается. Он ждет, пока я ввожу ввод, но мне нужно ввести значение и дважды нажать Enter (второй ввод правильно сохранен).

int yes(void)
{
    int yes, rc, isValid;
    char answer, nl = 'a';

    do {
        clearKeyboard();
        rc = scanf(" %c%c", &answer, &nl);
        if (nl == '\n')  { //|| rc != 2
            if ((answer == 'y') || answer == 'Y') {
                yes = 1;
                isValid = 1;
            }
            else if ((answer == 'n') || answer == 'N') {
                yes = 0;
                isValid = 1;
            }
            else {
                printf("*** INVALID ENTRY *** <Only (Y)es or (N)o are acceptable>: ");
                isValid = 0;
                clearKeyboard();
            }
        }
        else {
            printf("*** INVALID ENTRY *** <Only (Y)es or (N)o are acceptable>: ");
            isValid = 0;
            clearKeyboard();
        }
    } while (!isValid);

    return yes;
}
0
H sub 14 Ноя 2019 в 22:35
 – 
klutt
14 Ноя 2019 в 22:38
1
Короткий ответ. Не используйте scanf для пользовательского ввода.
 – 
klutt
14 Ноя 2019 в 22:45

1 ответ

Я рекомендую не использовать scanf, но раз вы: какова цель nl? Если вы удалите второй %c в scanf, вы получите свой answer, и вам нужно будет ввести его только один раз.

0
Burstful 14 Ноя 2019 в 23:25