Проверка ввода зацикливается - C (СИ)
Формулировка задачи:
Здравствуйте. Есть одна функция ввода:
Когда ввожу, например,
void input( double *d, double *x, double *y ) { for(;;) { printf( "Enter d, x, y: " ); if( scanf("%lf %lf %lf", d, x, y) == 3 && (*d > 0.0 && *x > 0.0 && *y > 0.0) ) return; printf( "Error. Try again.\n\n" ); } }
'a'
– срабатывает бесконечный цикл с сообщением об ошибке. Как это исправить?Спасибо.
Решение задачи: «Проверка ввода зацикливается»
textual
Листинг программы
while ((c = getchar()) != EOF && c != '\n') ;
Объяснение кода листинга программы
- Ввод данных осуществляется с помощью функции getchar(), которая возвращает очередной символ ввода.
- Полученный символ сохраняется в переменной
c
. - Проверка на условие:
c
не должен быть равен EOF (константа, обозначающая конец файла) иc
не должен быть равен символу новой строки '\n'. - Если условие выполняется, то происходит переход к следующей итерации цикла.
- В противном случае, цикл завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д