Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction de la librairie string.h

Sujet résolu
    27 juin 2007 à 15:29:01

    dans les chapitre sur les "char" (les lettres) on nous parle de differentes fonction. A la fin on nous demande :
    "Voici ce que je vous propose de faire : nous avons étudié sur la fin de ce chapitre un petit nombre de fonctions issues de la librairie string.h. Vous êtes parfaitement capables de les écrire vous-mêmes. Faites-le. ":

    J"'ai essayer de reproduire la premiere fonction qui compte le nombre de cas e que prend le tableau char mais je n'ai aucune idée de la maniere de compter le nombre de case que le tableau char prend en compte.
    Comment faire ???

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2007 à 15:36:13

      Une chaine se termine par le caractère '\0'.
      Donc tu vas dans la première case du tableau, si ce n'est pas '\0' tu passes à la case suivante et tu incrémentes ton compteur.
      Ca devrait te donner le chemin à suivre.
      • Partager sur Facebook
      • Partager sur Twitter
        27 juin 2007 à 15:40:04

        Une chaîne de caractère se termine toujours par '\0' (caractère NULL). Tu fais donc une bête boucle qui s'incrémente tant que le caractère correspondant à cet index ne vaut pas ce caractère.

        Traduction en code :

        Secret (cliquez pour afficher)
        size_t my_strlen(const char *str)
        {
            size_t i;
            for(i = 0 ; str[i] != '\0' ; ++i);

            return i;
        }


        Simple comme bonjour...
        • Partager sur Facebook
        • Partager sur Twitter
          27 juin 2007 à 19:46:20

          moi j'ai changer ton code car je ne m'y retrouvais pas tres bien:

          long nombreCaractere(const char* bonjour)
          {
              long y = 0;

              char caractere = 0;

              do
              {

                  caractere = bonjour[y];


                  y++;

                  }
                  while(caractere != '\0');

          y--;

          return y;

              }


          NB: mon probleme venait principalement de la ligne while CAR au lieu d'avoir mi "caractere" j'avais mis "bonjour" (c'est le nom de mon tableau char dans lequel j'ai marquer du texte !!!) ALORS il est normale que cela ne marche paps meme avec ton code.

          De toute facons, si je n'avais pas compris qu'il fallait une deuxieme variable de type char qui enregistrait les lettre les une apres les autre, Je n'aurais jamais reussi.

          MERCI.
          • Partager sur Facebook
          • Partager sur Twitter
            27 juin 2007 à 20:17:09

            Citation : tarentule

            NB: mon probleme venait principalement de la ligne while CAR au lieu d'avoir mi "caractere" j'avais mis "bonjour" (c'est le nom de mon tableau char dans lequel j'ai marquer du texte !!!) ALORS il est normale que cela ne marche paps meme avec ton code.


            Je n'ai pas de boucle do{}while(), donc mon code n'est absolument pas concerné. Je peux t'assurer que mon code est fonctionnel (encore heureux, vu sa simplicité).

            Citation : tarentule

            De toute facons, si je n'avais pas compris qu'il fallait une deuxieme variable de type char qui enregistrait les lettre les une apres les autre, Je n'aurais jamais reussi.


            Justement, tu n'as pas besoin... c.f. mon code...

            Citation : tarentule

            moi j'ai changer ton code car je ne m'y retrouvais pas tres bien:


            • Mauvaise indentation
            • Variable inutile (l'assignation prend du temps -même minime-)
            • Décrémentation ultérieure pouvant être évitée
            Qu'est-ce que tu ne comprends pas dans mon code ?

            La boucle for incrémente le compteur i tant que le caractère d'indice i dans la chaîne ne vaut pas 'NULL', et comme aucune autre instruction n'est nécessaire, on met un point virgule (instruction vide).
            Quant au size_t (c'est peut-être ça qui bloque), il s'agit en fait d'un alias de unsigned long.
            • Partager sur Facebook
            • Partager sur Twitter

            fonction de la librairie string.h

            × 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