код:
#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
Вопрос:
Все работает нормально, он будет игнорировать пробелы и новую строку и вывод Количество символов ввода на экран (в этой программе я просто обрабатываю запятую, восклицательный знак, цифры или любой характерный символ для печати, как и амперсанд, как и символ как символ), когда я попал в симуляцию EOF, который является ^ z
.
Но есть что-то не так, когда я вводим эту строку в программу. Например, я вводим это: abcdefg ^ z
, что означает, что я вводил какой-то символ до и на одной линии как ^ z
. Вместо того, чтобы завершить программу и распечатать общие символы, программа будет продолжать просить ввода.
EOF завершающий вход символа работает только при уставке ^ z
на одной строке или Делая это: ^ zabvcjdjsjsj
. Почему это происходит?