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;
}
1 ответ
Я рекомендую не использовать scanf
, но раз вы: какова цель nl
? Если вы удалите второй %c
в scanf
, вы получите свой answer
, и вам нужно будет ввести его только один раз.
Похожие вопросы
Связанные вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.
scanf
для пользовательского ввода.