Завершение программы по нажатию Enter - C (СИ)
Формулировка задачи:
Вообщем суть такова вводятся числа через ентер, надо найти их среднее арифметическое. Ввод должен осуществляться до тех пор пока не будет пустого значения. Пробовал делать через строки с преобразования получился колхоз. Подскажите как реализовать?
Решение задачи: «Завершение программы по нажатию Enter»
textual
Листинг программы
int i;
int c;
while (printf("Input: ") && (c=getchar())!='\n') {
ungetc(c, stdin);
if (scanf("%d", &i) == 1)
printf("i = %d\n", i);
fflush(stdin);
}
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
iиc. - Затем выполняется цикл while, который продолжается до тех пор, пока
printfне выведетInput:и не получит символ новой строки от пользователя (т.е. пока пользователь не нажмет Enter). - Внутри цикла, значение
cприсваивается символу, который был получен отgetchar. - Затем, с помощью
ungetc, этот символ возвращается в поток ввода, чтобы его можно было прочитать второй раз. - Если пользователь ввел целое число и
scanfсмог его считать (т.е. еслиscanfвернул 1), то это число выводится на экран. - В конце каждого цикла, буфер ввода очищается с помощью
fflush. Таким образом, этот код позволяет пользователю вводить числа, пока он не нажмет Enter. Как только Enter нажат, программа выводит последнее введенное число.