C : Tester un programme de comptage de mots
Résolu/Fermé
SeKoYa
Messages postés
152
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
13 août 2010
-
2 janv. 2009 à 12:28
SeKoYa Messages postés 152 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 août 2010 - 5 janv. 2009 à 17:22
SeKoYa Messages postés 152 Date d'inscription jeudi 28 août 2008 Statut Membre Dernière intervention 13 août 2010 - 5 janv. 2009 à 17:22
6 réponses
0x0syscall
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009
5
2 janv. 2009 à 13:12
2 janv. 2009 à 13:12
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,
Maker06
Messages postés
337
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
27 décembre 2009
63
2 janv. 2009 à 14:24
2 janv. 2009 à 14:24
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.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
2 janv. 2009 à 14:38
2 janv. 2009 à 14:38
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 ;-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
2 janv. 2009 à 14:03
2 janv. 2009 à 14:03
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?
0x0syscall
Messages postés
85
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
30 juin 2009
5
2 janv. 2009 à 14:11
2 janv. 2009 à 14:11
Sous linux
avec gcc version 4.3.2
avec gcc version 4.3.2
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
2 janv. 2009 à 14:32
2 janv. 2009 à 14:32
Re,
Ben, sous linux ça marche sans aucune correction ;-)
Ben, sous linux ça marche sans aucune correction ;-)
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.
SeKoYa
Messages postés
152
Date d'inscription
jeudi 28 août 2008
Statut
Membre
Dernière intervention
13 août 2010
18
5 janv. 2009 à 17:22
5 janv. 2009 à 17:22
Bon et bien je ne connaissais pas encore le :
do{...}while...
mais en tout cas merci beaucoup à tous.
J'eesaye de suivre le livre dans l'ordre mais il est vrai que des solutions plus pratiques existent et que je ne découvrirais pas avant quelques pages...
Encore merci et bonne continuation.
do{...}while...
mais en tout cas merci beaucoup à tous.
J'eesaye de suivre le livre dans l'ordre mais il est vrai que des solutions plus pratiques existent et que je ne découvrirais pas avant quelques pages...
Encore merci et bonne continuation.