Как очистить 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). Список действий в коде можно представить следующим образом:

  1. Включаем заголовочный файл , который содержит расширенные функции ввода-вывода из стандартной библиотеки C.
  2. Используем функцию __fpurge(stdin), которая очищает стандартный ввод (stdin). Таким образом, в данном коде всего два элемента:
  3. Включение заголовочного файла - 1
  4. Функция __fpurge(stdin) - 2

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы