EOF в командной строке Windows не заканчивается входной поток

код:

#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;
}

Вопрос:

  1. Все работает нормально, он будет игнорировать пробелы и новую строку и вывод Количество символов ввода на экран (в этой программе я просто обрабатываю запятую, восклицательный знак, цифры или любой характерный символ для печати, как и амперсанд, как и символ как символ), когда я попал в симуляцию EOF, который является ^ z .

  2. Но есть что-то не так, когда я вводим эту строку в программу. Например, я вводим это: abcdefg ^ z , что означает, что я вводил какой-то символ до и на одной линии как ^ z . Вместо того, чтобы завершить программу и распечатать общие символы, программа будет продолжать просить ввода.

  3. EOF завершающий вход символа работает только при уставке ^ z на одной строке или Делая это: ^ zabvcjdjsjsj . Почему это происходит?

7
задан Nisse Engström 26 September 2016 в 20:19
поделиться