Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction similaire strlen

cours

Sujet résolu
    19 août 2006 à 20:26:40

    bon voila j'essaye de refaire les fonctions de manipulation de chaine.
    Et en faite j'ai un probleme de recopiage...
    Je suis sur la fonction strlen du cours et j'ai copier coller la fonction similaire du cours...
    Mais, et la et le probleme elle ne me renvoie pas 5 mais 1018...
    porquoi?? o_O
    j'ai essayé de la refaire mais pas moyen et je vois pas d'erreur (le seul hic et que je comprend pas pourquoi on boucle sur la valeur '0')
    mais bon je pense pas que le probleme vient de la...
    j'utilise visual (si ca viendré de l'ide mais la non plus je ne pense pas) help!!!!!
    • Partager sur Facebook
    • Partager sur Twitter
      19 août 2006 à 21:12:40

      #include <stdio.h>
      #include<stdlib.h>
      long longueurChaine(const char* chaine);

      int main(int argc, char *argv[])
      {
      char chaine[] = "Salut";
      long longueur = 0;

      longueur = longueurChaine(chaine);

      printf("La chaine %s fait %ld caracteres de long", chaine, longueur);

      return 0;
      }

      long longueurChaine(const char* chaine)
      {
      long nombreDeCaracteres = 0;
      char caractereActuel = 0;

      do
      {
      caractereActuel = chaine[nombreDeCaracteres];
      nombreDeCaracteres++;
      }

      while(caractereActuel != '0'); // On boucle tant qu'on n'est pas arrivé à l'

      nombreDeCaracteres--; // On retire 1 caractère de long pour ne pas compter l'

      return nombreDeCaracteres;
      }

      maintenant j'ai remplacé while(caractereActuel != '\0'); par while(caractereActuel > 'A' && caractereActuel < 'z')

      ca fonctionne mais j'ai pas compris l'erreur qui est dans le cour partie sur les chaines de caractere
      • Partager sur Facebook
      • Partager sur Twitter
        19 août 2006 à 21:15:32

        Pas compris. Et ta condition est fausse si tu mets majuscule et minuscule.

        Fais plutôt ceci : ( ( (caractereAtuel >= 'A') && (caractereAtuel <= 'Z') ) || ( (caractereAtuel >= 'a') && (caractereAtuel <= 'z') ) )
        • Partager sur Facebook
        • Partager sur Twitter
          19 août 2006 à 21:28:27

          oui c'est du chipotage pour 3-4 caracteres en plus... j'avé fait ca provisoirement...
          mais le vrai probleme reside dans l'autre code (celui du cours)
          voici le lien le code est dans la partie strlen...
          http://www.siteduzero.com/tuto-3-4144-1-les-chaines-de-caracteres.html#ss_part_3

          et la question est : est ce qu'a l'execution la console affiche 5??
          moi elle m'affiche 1018 donc je me demandé pourquoi...
          • Partager sur Facebook
          • Partager sur Twitter
            19 août 2006 à 21:30:55

            Non, car s'il rentre une phrase seul les lettres du premier mot seront comptées. Le problème de ta fonction, kamuirt, c'est que le caractère de fin de chaîne n'est pas '0' mais '\0'. (Quoi que ce problème vient peut-être du "slash bug" de Lisa...).
            De plus, pense à utiliser les balises < code> pour colorer ton code, et pense à l'indenter, cela nous aidera à t'aider.

            EDIT:
            J'avais raison, c'est bien le slash manquant au caractère de fin de chaîne qui pose problème, il a bel et bien disparu dans le tuto (comme indiqué dans la news, soit dit en passant ^^ )
            • Partager sur Facebook
            • Partager sur Twitter

            fonction similaire strlen

            × 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