Как очистить stdin? - C (СИ)
Формулировка задачи:
Добрый вечер!
Если ввод соответствует формату, то все работает как надо. Если же нет, то получается как на скриншоте.
Я так понимаю, в этом случае scanf не очищает stdin, fflush не помогает. Возможно ли решить проблему?
P.S. linux
#include <stdio.h>
int main ()
{
int n;
do {
// fflush(stdin);
printf("n = ");
} while (scanf("%2d", &n) <= 0);
return 0;
}Решение задачи: «Как очистить stdin?»
textual
Листинг программы
#include <stdio_ext.h> __fpurge(stdin);
Объяснение кода листинга программы
В данном коде происходит очистка стандартного ввода (stdin). Список действий в коде можно представить следующим образом:
- Включаем заголовочный файл
, который содержит расширенные функции ввода-вывода из стандартной библиотеки C. - Используем функцию __fpurge(stdin), которая
очищаетстандартный ввод (stdin). Таким образом, в данном коде всего два элемента: - Включение заголовочного файла
- 1 - Функция __fpurge(stdin) - 2