Не могу разобраться с EOF - C (СИ)
Формулировка задачи:
Требуется написать программу для подсчета пробелов,знаков табуляции и знаков конца строки.
Суть проблемы в следующем:собственно когда я заканчиваю ввод (ctrl+Z) то у меня в этой строке появляется ^Z и если до ^Z были символы ,то просто переходит на новую строку ,не выдавая ответ,если на пустой строке зажать ctrl+Z то опять же появляется ^Z и выдает ответ 0 0 0.
Как мне обозначить правильно конец файла,чтобы получился верный ответ?
P.S ctrl+D не помогает
#include<stdio.h> main() { int p = 0, t = 0, n = 0, c; while (с = getchar() != EOF) { if (с == ' ') ++p; if (с == '\t') ++t; if (с == '\n') ++n; } printf("%d %d %d\n", p, t, n); }
Решение задачи: «Не могу разобраться с EOF»
textual
Листинг программы
while (с = getchar() != EOF)
Объяснение кода листинга программы
В представленном коде выполняется следующая последовательность действий:
с = getchar();
— в этом выражении функцияgetchar()
используется для чтения символа из стандартного ввода (обычно это клавиатура). Результат этого действия сохраняется в переменнойс
.!=
— это оператор сравнения, который проверяет, не равно ли значение переменнойс
символуEOF
. В языке CEOF
представляет собой специальное значение, которое указывает на конец файла (или потока ввода). Если ввод закончился, то есть достигли конца файла или потока, тос
будет равноEOF
.while (с = getchar() != EOF)
— это цикл while, который будет выполняться до тех пор, пока значение переменнойс
не станет равнымEOF
. Это означает, что цикл будет выполняться до тех пор, пока не будет достигнут конец файла или потока ввода. В общем, этот код считывает символы из стандартного ввода до тех пор, пока не достигнет конца файла или потока ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д