[c] je ne comprend rien !
Fermé
Maxg59
Messages postés
275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
7 octobre 2006
-
18 août 2005 à 23:43
Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 - 19 août 2005 à 02:12
Maxg59 Messages postés 275 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 7 octobre 2006 - 19 août 2005 à 02:12
2 réponses
ceddec
Messages postés
148
Date d'inscription
dimanche 31 juillet 2005
Statut
Membre
Dernière intervention
10 mars 2012
82
18 août 2005 à 23:56
18 août 2005 à 23:56
Bonsoir,
d'aprés moi, tu lis avec getchar()
et quand ce n'est pas un deuxième (ou plus) espace consécutif, on affiche le caractère lu avec putchar.
Voila l'explication du script mais je ne suis pas sur
Bon Courage
d'aprés moi, tu lis avec getchar()
et quand ce n'est pas un deuxième (ou plus) espace consécutif, on affiche le caractère lu avec putchar.
Voila l'explication du script mais je ne suis pas sur
Bon Courage
Maxg59
Messages postés
275
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
7 octobre 2006
27
19 août 2005 à 02:12
19 août 2005 à 02:12
Miracle !!!
J'ai compri !!!!
Big merci !!!!
J'ai compri !!!!
Big merci !!!!
18 août 2005 à 23:58
19 août 2005 à 00:23
Je crois avoir compris.
Alors, voilà dis toi que la variable c est un entier.
Un caractère prend habituellement la place d'un octet.
Un octet c'est la taille d'une variable char. Une variable int possède le double je crois (avec gcc). Mais qu'un int possède plus de place ne change rien: il ne peux contenir qu'un caractère et non pas une chaîne de caractère.
Si tu veux stocker une chaine de caractère, il faut utiliser un tableau et non pas une simple variable. (Et changer le code).
getchar ne retourne qu'un seul caractère.
Alors imagine:
Tu tapes trois caractères, tant que pas arrivé à la fin de ce que tu as tapé (!=EOF), la boucle continuera.
Premier passage de la boucle: getchar récupère le premier espace
, avec la condition d'en dessous, il s'incrémente de 1.
Avec la condition du dessous, on voit qu'il est plus petit que 2 donc affichage de l'espace.
Second passage de la boucle:getchar récupère le deuxième espace, avec la condition d'en dessous, il s'incrémente de 1, donc espace est égal à 2, donc pas d'affichage avec la condition d'après. Et ainsi de suite: tant que getchar ne donnera pas autre chose qu'un espace à c, alors espace sera superieur à 2, donc pas d'affichage.
Le soucis c'est peut être que tu avais cru que getchar retournait une chaine, et non pas un seul caractère. Ca change tout.
Donc ici, si c est égal à autre chose qu'un espace, il ya aura affichage sans encombre, mais s'il y a un espace, il incrémentera la variable espace.
Il faut bien se dire que tu ecris ta ligne, tu appuies sur entrée, et getchar ne récupèrera qu'un seul caractère à la fois jusqu'à ce qu'il atteigne la fin. Donc il ya aura une itération de la boucle à chaque fois qu'un caractère est récupéré.