Игнорит 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д