Les Allergies
Alimentaires
Posez votre question Signaler

Getchar (langage C) [Résolu]

limbergh 650Messages postés 8 juillet 2007Date d'inscription 29 juin 2010Dernière intervention - Dernière réponse le 7 juil. 2008 à 23:57
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 :
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int nc;
  for (nc=0; getchar() != EOF ; nc++);

    printf("%d\n", nc);
    return 0;
}
Lire la suite 

Getchar (langage C) »

Suggestions
11 réponses
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
Salut FIddy,

à quoi sert le char entre parenthèse...
fiddy- 7 juil. 2008 à 22:00
getchar() retourne un int, et '\n' est un char. Il faut donc caster, pour faire du code propre. Mais bon c'est pas obligé ;)
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Réponse
+0
moins plus
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;
}



Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
fiddy- 7 juil. 2008 à 23:57
C'est le code que j'ai mis plus haut ;), et il y a aussi l'explication.
Bonne nuit
Ajouter un commentaire
Ce document intitulé « getchar (langage C) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?