Игнорит fgets() - C (СИ)
Формулировка задачи:
void answ(){
printf("Your answer: ");
char temp_answer[100];
fgets(temp_answer, sizeof(temp_answer), stdin);
int size_of_answer=strlen(temp_answer);
if (size_of_answer==2){
if((temp_answer[0]=='1'||temp_answer[0]=='2'||temp_answer[0]=='3')){
printf("\n");
strcpy(answer, temp_answer);}
else{
printf("Your answer is invalid. Try again!\n");
return answ();
}}
else{
printf("Your answer is invalid. Try again!\n");
return answ();
}
}Решение задачи: «Игнорит fgets()»
textual
Листинг программы
if (scanf("%32d%c", ¶m, &bufStub) <= 0 || bufStub != '\n')
{
// Error
Объяснение кода листинга программы
- Входные данные: param, bufStub
- Используется функция scanf() для чтения входных данных
- Формат чтения:
%32d%c- %32d - чтение целочисленного значения, максимальное количество цифр - 32
- %c - чтение символа, в данном случае - новой строки (\n)
- Результат чтения сохраняется в переменной param (целочисленное значение) и bufStub (символ)
- Проверка на успешное чтение: если функция scanf() вернула значение меньше или равное нулю, или символ в bufStub не равен новой строке (\n), то выполняется блок кода, помеченный как
// Error