Как очистить буфер scanf() ? - C (СИ)
Формулировка задачи:
Мне нужно, чтобы scanf() вызывался до тех пор, пока не будет введено целое число, но происходит зацикливание.
fflush(stdin) - не помогает
scanf( "%*[^\n]" ); - помог, но я не понимаю, как это работает.
Есть ли более простой способ очистить буфер?
Листинг программы
- while (scanf("%d", &n) != 1 )
- {
- printf("Error\nInput n: ");
- }
Листинг программы
- while (scanf("%d", &n) != 1)
- {
- scanf("%*[^\n]");
- printf("Error\nInput n: ");
- }
Решение задачи: «Как очистить буфер scanf() ?»
textual
Листинг программы
- #include<stdio.h>
- float myFunc(void);
- int main (void)
- {
- int a;
- a = 0;
- while (myFunc() != 1) {
- puts("Repeat enter");
- }
- return 0;
- }
- float myFunc (void)
- {
- float a, c;
- int b;
- scanf("%f", &a);
- b = a;
- if ((c = (b / a)) > 0)
- return c;
- else
- return 0;
- }
Объяснение кода листинга программы
В этом коде:
- #include
- это включение стандартной библиотеки файлов, которая содержит функции для ввода и вывода данных. - float myFunc(void); - это функция с именем myFunc, которая возвращает значение типа float (число с плавающей точкой) и не принимает аргументов.
- int main (void) - это функция с именем main, которая возвращает значение типа int (целое число) и не принимает аргументов.
- int a; - это объявление переменной с именем a типа int (целое число).
- a = 0; - это присваивание переменной a значение 0.
- while (myFunc() != 1) { - это цикл while, который будет выполняться до тех пор, пока функция myFunc не вернет значение 1.
- puts(
Repeat enter
); - это функция для вывода строки на экран. - return 0; - это выход из функции main с возвратом значения 0.
- float myFunc (void) - это определение функции myFunc.
- scanf(
%f
, &a); - это функция для ввода данных с помощью клавиатуры, в данном случае вводится число с плавающей точкой в переменную a. - b = a; - это присваивание переменной b значение переменной a.
- if ((c = (b / a)) > 0) - это условная конструкция if, которая проверяет, что результат деления b на a больше 0.
- return c; - это возврат значения переменной c из функции myFunc.
- else - это часть условной конструкции if, которая выполняется, если результат деления b на a меньше или равен 0.
- return 0; - это возврат значения 0 из функции myFunc.
- } - это закрытие цикла while в функции main.
- } - это закрытие функции main.
- } - это закрытие определения функции myFunc.
- } - это закрытие файла, в котором написан код.
- } - это конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д