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