Getchar (langage C)
Résolu
limbergh
Messages postés
669
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir,
j'ai un code qui demande à l'utilisateur d'entrer une chaine et ensuite d'afficher seulement le nombre de caractère. Quand je le fais, il ne m'affiche rien ou si je met un ";" après le for, j'ai le nombre de caractère qui s'affiche mais du début à la fin........ 0,1,2,3,4,...........123 (par exemple)
Si quelqu'un sait m'aiguiller sur une solution pour juste afficher le nombre de caractère ; je suis preneur....
Voici mon code :
j'ai un code qui demande à l'utilisateur d'entrer une chaine et ensuite d'afficher seulement le nombre de caractère. Quand je le fais, il ne m'affiche rien ou si je met un ";" après le for, j'ai le nombre de caractère qui s'affiche mais du début à la fin........ 0,1,2,3,4,...........123 (par exemple)
Si quelqu'un sait m'aiguiller sur une solution pour juste afficher le nombre de caractère ; je suis preneur....
Voici mon code :
#include <stdio.h>
#include <stdlib.h>
int main()
{
int nc;
for (nc=0; getchar() != EOF ; nc++);
printf("%d\n", nc);
return 0;
}Configuration: Linux Firefox 3.0
9 réponses
-
Re,
voici un autre code qui ne fonctionne pas...
#include <stdio.h> #include <stdlib.h> int main() { int c, ne, nt, nf; ne = nt = nf = 0; //nombre d'espace, tabulation et fin de ligne while (( c = getchar ()) != EOF) { if (c == ' ') ++ne; if (c == '\t') ++nt; if (c == '\n') ++nf; } printf("%d %d %d\n", ne, nt, nf); return 0; }
J'ai bien comme retour ce que l'utilsiateur note mais pas les réponses demandée...
Merci d'avance pour votre aide -
Salut,
Essaie :#include <stdio.h> int main(){ int nc; for(nc=0;(char)getchar()!='\n';nc++); printf("%d\n",nc); return 0; }
Ca devrait marcher.
Cdt -
-
J'ai essayé de cette manière et rien n'y fait je dois faire une grosse erreur de débutant et je ne vois pas laquelle,
Voici l'autre code...
#include <stdio.h> #include <stdlib.h> int main() { int c, ne, nt, nc; while (( c = getchar ()) != EOF) { for (nc=0; getchar() != EOF; nc++) ++nc; for (ne=0; getchar() != EOF; ne++) ++ne; for (nt=0; getchar() != EOF; nt++) ++nt; } printf("%d %d %d\n", nc, ne, nt); return 0; } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Dans mon post précédent, je t'ai donné la solution.
N'utilise pas EOF, mais '\n'.
Et je vois pas pourquoi tu fais un ++nc. Tu n'as pas besoin. -
Salut Fiddy,
j'ai changé mon code mais quand je compte le nombre de mot j'ai toujours 0...
Peux-tu jeter un oeil...
#include <stdio.h> int main(){ int c; int nc = 0, nm = 0; // nc = nbre de caractère // nm = nbre de mot for(nc=0;(c=getchar()!='\n');nc++) { if (c == ' ') nm++; } printf("%d %d\n",nc, nm); return 0; } -
Re,
Oui c'est normal, car tu as mis les parenthèses au mauvais endroit, ainsi c prend la valeur de la comparaison de getchar() avec '\n' qui vaut soit 0 ou 1, donc jamais égale à la valeur ascii de ' '.
Là, ce code devrait marcher.#include <stdio.h> int main(){ int c; int nc = 0, nm = 0; // nc = nbre de caractère // nm = nbre de mot for(nc=0;(c=getchar())!='\n';nc++){ if (c == ' ') nm++; } printf("%d %d\n",nc, nm); return 0; }
-
ok merci ça fonctionne mais peux-tu m''expliquer pourquoi ça ne fonctionne pas avec la boucle for??? Si bien sur il y a une explication...
Encore merci pour tout -
Salut,
voilà la code avec la boucle for...;
Bonne nuit...
#include <stdio.h> int main() { int c; int nc = 0, nm = 0; // nc = nbre de caractère // nm = nbre de mot for (nc=0;(c=getchar())!='\n';nc++) if (c == ' ') nm++; printf("%d %d\n",nc, nm); return 0; }