Не могу разобраться с EOF - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Требуется написать программу для подсчета пробелов,знаков табуляции и знаков конца строки. Суть проблемы в следующем:собственно когда я заканчиваю ввод (ctrl+Z) то у меня в этой строке появляется ^Z и если до ^Z были символы ,то просто переходит на новую строку ,не выдавая ответ,если на пустой строке зажать ctrl+Z то опять же появляется ^Z и выдает ответ 0 0 0. Как мне обозначить правильно конец файла,чтобы получился верный ответ? P.S ctrl+D не помогает
Листинг программы
  1. #include<stdio.h>
  2. main() {
  3. int p = 0, t = 0, n = 0, c;
  4. while = getchar() != EOF) {
  5. if == ' ')
  6. ++p;
  7. if == '\t')
  8. ++t;
  9. if == '\n')
  10. ++n;
  11. }
  12. printf("%d %d %d\n", p, t, n);
  13. }

Решение задачи: «Не могу разобраться с EOF»

textual
Листинг программы
  1. while = getchar() != EOF)

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

В представленном коде выполняется следующая последовательность действий:

  1. с = getchar(); — в этом выражении функция getchar() используется для чтения символа из стандартного ввода (обычно это клавиатура). Результат этого действия сохраняется в переменной с.
  2. != — это оператор сравнения, который проверяет, не равно ли значение переменной с символу EOF. В языке C EOF представляет собой специальное значение, которое указывает на конец файла (или потока ввода). Если ввод закончился, то есть достигли конца файла или потока, то с будет равно EOF.
  3. while (с = getchar() != EOF) — это цикл while, который будет выполняться до тех пор, пока значение переменной с не станет равным EOF. Это означает, что цикл будет выполняться до тех пор, пока не будет достигнут конец файла или потока ввода. В общем, этот код считывает символы из стандартного ввода до тех пор, пока не достигнет конца файла или потока ввода.

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы