Problème réglé. Il suffit de mettre fin à la boucle pour que le printf s'affiche (changer EOF par '.' par exemple). Ce n'est pas expliqué dans le livre, et je trouve ça plutôt mal fichu. Je lis chaque ligne avec attention et ça m'aurait évité d'être bloqué.
EDIT: en fait ça fait partie d'un exercice de trouve comment tester ce programme. Je suis fier d'y être arrivé xD
Bonsoir à tous ! J'ai le livre "Le langage C Norme ANSI 2e édition" de K&R, version française.
Je débute dans le C, donc je ne sais pas si ce que j'ai sur mon écran est réellement ce que je devrais avoir.
Par exemple, à la fin du chapitre 1, on a ce code qui est censé compter les nombres de lignes, de caractères et de mots (ce n'est pas un exercice).
Code :
- # include <stdio.h>
- #define DEDANS 1
- #define DEHORS 0
- main()
- {
- int c, nl, nm, nc, etat;
- etat=DEHORS;
- nl = nm = nc =0;
- while((c=getchar()) != EOF) {
- ++nc;
- if (c == '\n')
- ++nl;
- else if (c == ' ' || c == '\n' || c == '\t')
- etat = DEHORS;
- else if (etat == DEHORS) {
- etat=DEDANS;
- ++nm;
- }
- printf("Il y a %d lignes, %d mots et %d caracteres\n\n", nl, nm, nc);
- }
- }
|
Avec ce code, est-ce normal que le printf s'affiche autant de fois qu'il y a de caractères ? Si j'écris une phrase, c'est vraiment le bordel dans la console.
Autre chose : est-ce normal qu'appuyer sur "ENTRER" compte comme un caractère ?
Pourquoi lorsque j'appuie sur un nombre la 1ère fois il me détecte un mot alors que les fois suivantes ça ne le fait pas ?
Voici une capture d'écran :
Je précise que je travail avec Visual Studio C++ Express 2010 sous Windows 7 64bits.
Je vous remercie d'avance pour votre aide !
Message édité par churos45 le 08-05-2012 à 16:16:22