Завершение программы по нажатию 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);
    }

Объяснение кода листинга программы

В этом коде:

  1. Объявлены две переменные: i и c.
  2. Затем выполняется цикл while, который продолжается до тех пор, пока printf не выведет Input: и не получит символ новой строки от пользователя (т.е. пока пользователь не нажмет Enter).
  3. Внутри цикла, значение c присваивается символу, который был получен от getchar.
  4. Затем, с помощью ungetc, этот символ возвращается в поток ввода, чтобы его можно было прочитать второй раз.
  5. Если пользователь ввел целое число и scanf смог его считать (т.е. если scanf вернул 1), то это число выводится на экран.
  6. В конце каждого цикла, буфер ввода очищается с помощью fflush. Таким образом, этот код позволяет пользователю вводить числа, пока он не нажмет Enter. Как только Enter нажат, программа выводит последнее введенное число.

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


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

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

8   голосов , оценка 3.5 из 5