EOF dans une invite de commande Windows n'est pas arrêter de flux d'entrée

Code:

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

Question:

  1. Tout fonctionne bien, il ignore les espaces et les retour à la ligne de sortie et le nombre de caractères d'entrée à l'écran (dans ce programme, je viens de traiter virgule, point d'exclamation, de chiffres ou de tout document imprimable symbole spécial caractère comme esperluette que le caractère trop) quand j'ai frappé à la EOF simulation qui est ^z.

  2. Mais il ya quelque chose de mal quand je saisie cette ligne pour le programme. Par exemple, j'ai cette entrée: abcdefg^z, ce qui signifie que je saisie de certains caractères avant et sur la même ligne que ^z. Au lieu de terminer le programme et imprimer des caractères au total, le programme continuera à demander pour l'entrée.

  3. EOF caractère de terminaison d'entrée ne fonctionne que lorsque je précise ^z sur une seule ligne ou en faisant ceci: ^zabvcjdjsjsj. Pourquoi est-ce arrivé?

OriginalL'auteur caramel1995 | 2011-09-10