Partage
  • Partager sur Facebook
  • Partager sur Twitter

un caractère bizarre

    11 août 2017 à 13:55:13

    bonjour, j'ai pas mal de fois le meme probleme et je ne comprend pas ou est le probleme. par exemple ceci:

    le code elimine les voyelles et ajoute un '.' avant les autres lettres.

    ça marcher pour les premiers voyelles mais pas pour le dernier 'a' et je ne sais pas pourquoi.

    voici mon code:

    int main()

    {

        char ch[101],r[210];

        int i=0,j=0;

        scanf("%s",ch);

        for (i=0;i<strlen(ch);i++)

        {

            if (toupper(ch[i])!='A' &&toupper(ch[i])!='O'&&toupper(ch[i])!='I'&&toupper(ch[i])!='Y'&&toupper(ch[i])!='U'&&toupper(ch[i])!='E')

            {

                r[j]='.';

                r[j+1]=ch[i];

                j+=2;

                printf("%s\n",r);

            }

        }

        printf("%s",r);

        return 0;

    }

    Merci de m'aider.

    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2017 à 14:16:27

      Pour faire du tableau de char r une chaîne de caractère, il ne faut pas oublier le '\0' de fin de chaîne !

      PS : utilise le bouton code </> pour poster ton code sur le forum !

      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2017 à 15:47:23

        Bonjour,

        En effet il manque le '\0' final pour signifier la fin de ta chaine de caractère. Si je peux me permettre il serait peut-être plus judicieux de faire quelque chose de ce style:

        char lettre;
        /*...*/
        for(i = 0; i < strlen(ch); i++){
        	lettre = toupper(ch[i]);
        	if (lettre != 'A' && lettre != 'O' && lettre != 'I' && lettre != 'Y' && lettre != 'U' && lettre != 'E'){
        /*...*/

        Ca t'évite de calculer de (trop) nombreuses fois toupper(ch[i]). Juste une problème d'optimisation ;)

        • Partager sur Facebook
        • Partager sur Twitter
          11 août 2017 à 16:05:11

          Hello,

          J'aurais simplement écrit

          if(strchr("AEIYOUaeyiou",ch[i])!=NULL) {
              ....
          }
          • Partager sur Facebook
          • Partager sur Twitter

          On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

            14 août 2017 à 16:24:53

            Merci :D
            Je suis encore un debutant en C.
            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2017 à 16:47:44

              BouattayWassim a écrit:

              Merci :D
              Je suis encore un debutant en C.


              Quleques pierres de plus à l'édifice de ta connaissance :magicien:

              -
              Edité par edgarjacobs 14 août 2017 à 16:48:51

              • Partager sur Facebook
              • Partager sur Twitter

              On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              un caractère bizarre

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown