C : Tester un programme de comptage de mots
Résolu
SeKoYa
Messages postés
152
Date d'inscription
Statut
Membre
Dernière intervention
-
SeKoYa Messages postés 152 Date d'inscription Statut Membre Dernière intervention -
SeKoYa Messages postés 152 Date d'inscription Statut Membre Dernière intervention -
6 réponses
Salut SeKoYa,
Ce qui bug c'est au niveau de sa :
voici le code réédité:
Pour quitter l'entrée de caractère tape "." (un point) si tu veux modifier cette saisie change juste le while() de fin :)
Voila cordialement 0x0syscall,
Ce qui bug c'est au niveau de sa :
while ((c = getchar()) != EOF) {
voici le code réédité:
#include <stdio.h> #include <stdlib.h> #define DEDANS 1 /* à l'intérieur d'un mot */ #define DEHORS 0 /* à l'extérieur d'un mot */ /* compte les lignes, les mots et les caractère en entrée */ int main() { int c, nl, nm, nc, etat; etat = DEHORS; nl = nm = nc = 0; do { c = getchar(); ++nc; if (c == '\n') ++nl; if (c == ' ' || c == '\n' || c == '\t') etat = DEHORS; else if (etat == DEHORS) { etat = DEDANS; ++nm; } }while(c != '.'); printf("%d %d %d\n", nl, nm, nc); return 0; }
Pour quitter l'entrée de caractère tape "." (un point) si tu veux modifier cette saisie change juste le while() de fin :)
Voila cordialement 0x0syscall,
Si tu veux compter des mots et autres, tu devrais copier ce qui est entrée par l'utilisateur dans une chaine de caractère, parcourir cette chaine et faire tes différents tests à ce moment.
Je serai toi j'utiliserai un scanf pour récupérer les données et une boucle genre :
do{
...
}while(caratere != '.');
Mais tu peux aussi utiliser un pointeur pour parcourir ta chaine.
Je serai toi j'utiliserai un scanf pour récupérer les données et une boucle genre :
do{
...
}while(caratere != '.');
Mais tu peux aussi utiliser un pointeur pour parcourir ta chaine.
Salut,
do{
...
}while();
on l'utilise quand on veut exécuter au moins une fois la boucle
Dans l'exemple montré( depuis livre du K&R) while((c=getchar()) !=EOF ) est juste un raccourci pour ne pas être obligé initialiser c avant la boucle.
Mais je pense que SeKoYa, est sous windows ;-)
do{
...
}while();
on l'utilise quand on veut exécuter au moins une fois la boucle
Dans l'exemple montré( depuis livre du K&R) while((c=getchar()) !=EOF ) est juste un raccourci pour ne pas être obligé initialiser c avant la boucle.
c=getchar(); while( c != EOF){ ........... c=getchar(); }Pour obtenir le caractère EOF il faut appuyer sur CTRL+D
Mais je pense que SeKoYa, est sous windows ;-)
Salut,
Ce qui bug c'est au niveau de sa :
while ((c = getchar()) != EOF) {
Non, il n'y a pas de bug à ce niveau.
Le programme est correct.
Tu compile avec quel compilateur. Tu es sous Windows?
Ce qui bug c'est au niveau de sa :
while ((c = getchar()) != EOF) {
Non, il n'y a pas de bug à ce niveau.
Le programme est correct.
Tu compile avec quel compilateur. Tu es sous Windows?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour les veinards qui sont sous Linux, il existe une commande de base incluse dans le système d'exploitation; il s'agit de wc (ce n'est pas une plaisanterie)
wc [nom du fichier]vous donne directement le nbre de lignes, de mots et de caractères.