while ((c = getchar()) != EOF) Pas appelé à disparaître

Je viens de lire "Le Langage de Programmation C" et je suis arrivé à cette partie d'entrées et de sorties.

J'ai lu d'autres fils en disant que la console ne reconnait pas entrer comme EOF. De sorte que je devrais utiliser CTRL + Z dans Windows ou CTRL + D sous Unix (ni de ceux qui travaille pour moi).

J'ai aussi lu d'autres gens qui demandent la même chose en disant qu'ils pourraient le faire fonctionner, le problème dans leurs codes a été syntaxe pas le programme n'est pas appelé à disparaître.

Est-il une autre solution?

C'est le code:

#include <stdio.h>
main()
{
    int nb, nl, nt, c;
    nb = 0;
    nl = 0;
    nt = 0;
    while ((c = getchar()) != '\n'){
        if (c == ' ')
            ++nb;
        else if (c == '\n')
            ++nl;
        else if (c == '\t')
            ++nt;
    }
    printf("Input has %d blanks, %d tabs, and %d newlines\n", nb, nt, nl);
}

Edit: Le \n était censé être une des expressions du FOLKLORE, j'ai été déconner avant que j'ai posté et j'ai oublié je l'ai changé 😛

Il ne fonctionne pas avec les expressions du FOLKLORE ni, je l'ai tout simplement ignorée.

En tout état de (c = getchar()) != '\n') , \n doit être EOF
Je ne vois pas != EOF dans votre code
votre code ci-dessus va accepter '\n' en tant que condition d'arrêt
Veuillez modifier votre question afin que nous puissions voir le code réel, vous êtes en cours d'exécution, qui sans doute ne fait référence à EOF. Copier-coller le code source; ne pas re-type. while ((c = getchar()) != EOF) doit de travail. Vous êtes sur Windows ou Unix/Linux? Décrire (dans votre question, pas une réponse à ce commentaire) exactement ce que l'entrée que vous donnez lorsque vous exécutez le programme.
- Je me connecter à Ubuntu avec mastic, pour moi CTRL+DD va envoyer un EOF condition.

OriginalL'auteur user2738586 | 2013-09-02