Partage
  • Partager sur Facebook
  • Partager sur Twitter

question sur la base d'un fonction

dsl de tout ses topic :S

Anonyme
    11 avril 2006 à 20:25:33

    voila la je suis en train de faire les exercices des chaines de caracteres.

    les fonction de string.h presenter dans le tuto commence tous par:

    char* ...


    exemple

    char* strpbrk(const char* chaine, const char* lettresARechercher);


    Les 2 premieres j'ai pu contourner ca par un void mais la j'en est besoin mais seulement dans le cours jusqu'a present on utiliser des :

    -char, int, void, double,... mais pas avec un pointeur

    Que cela change t-il?
    Pouvez vous me donner un exemple concret?

    merci encore une fois d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2006 à 20:29:01

      Euh, j'ai bien l'impression que le chapitre sur les chaines est le chapitre 4 de la partie 2, et le chapitre sur les pointeurs est le chapitre 2 de la partie 2. Donc normalement tu as déja vu les pointeurs quand tu fais les chaines.

      char * fun(...) ça veut dire que la fonction renvoie un pointeur vers un char, donc dans ce cas une chaine de caractère.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        11 avril 2006 à 20:32:10

        oui ca j'ai compris. ^^
        mais donc a la fin on aura un : return *variable;

        c'est ca?
        • Partager sur Facebook
        • Partager sur Twitter
          11 avril 2006 à 20:33:46

          Euh je sais plus lol.
          Logiquement
          return chaine;
          non?
          Google powaaaa!
          • Partager sur Facebook
          • Partager sur Twitter
            11 avril 2006 à 20:35:26

            Bah ça dépend, mais en général non.

            Si tu as une chaine déclarée comme ça :
            char *chaine = malloc(...);

            et bien "*chaine" désigne la première lettre, et "chaine" l'adresse de la première lettre. donc il faudra faire "return chaine;".
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              11 avril 2006 à 20:42:32

              voila j'ai fait comme j'ai penssé mais sa marche pas comme prevu
              au lieu de retourner la lettre chercher + le reste de la chaine ca retourne seulement la lettre rechercher (c'est deja ca)

              voici le code

              char* rechercher(const char chaine[], int caractereARechercher)
              {
                  char copie[100] = {0}, *resultat=0; //null ne marche pas avec code block :o
                  copieChaine(copie, chaine);
                  long longueurDeLaChaine = longueurChaine(copie), i=0;
                      for ( i = 0 ; i<longueurDeLaChaine; i++)
                      {
                      resultat = chaine[i];
                      if (chaine[i] == caractereARechercher)
                      {
                      return resultat;
                      break;
                      }
                  }

              }


              pouvez vous m'eclairer?
              • Partager sur Facebook
              • Partager sur Twitter
                12 avril 2006 à 2:26:26

                déja pour NULL, t'as bien inclus stdlib.h ?

                resultat = chaine[i];
                Ça c'est pas bon. À gauche t'as un pointeur vers un charcatère, et à droite t'as un caractére. Ce sont pas des types compatibles.
                Essaie "resultat = &(chaine[i]);", ou, plus simple, "resultat = chaine+i;".

                Par ailleurs, mes options de compilateur me signalent ce genre d'erreurs bêtes. Tu devrais voir à en rajouter.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 avril 2006 à 9:19:33

                  Citation : chicour-59

                  voila j'ai fait comme j'ai penssé mais sa marche pas comme prevu
                  au lieu de retourner la lettre chercher + le reste de la chaine ca retourne seulement la lettre rechercher (c'est deja ca)


                  Problème de conception. Pour rechercher un caractère dans une chaine, on a pas besoin d'un tableau intermédiaire (de quelle taille serait-il ? Pourquoi 100).

                  Il faut travailler sur l'algorithme. Il est extrèmement simple:

                  Il faut parcourir la chaine et s'arréter quand on a trouvé le caractère ou si on tombe sur la marque de fin de chaine (0).
                  On retourne l'adresse du caractère ou NULL si on ne l'a pas trouvé.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !
                  Anonyme
                    12 avril 2006 à 13:27:48

                    j'ai fait ca:

                    char* rechercher(const char chaine[], int caractereARechercher)
                    {
                        long i = 0;
                        char *resultat = "NULL";
                        while (chaine[i] != 0)
                        {
                            if(chaine[i] == caractereARechercher)
                            {
                                resultat = &(chaine[i]);
                                break;
                            }
                            i++;
                        }
                        return resultat;


                    j'ai fait une recherche de 'a' par rapport a programmeur et ca me retourne 'e'
                    ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 avril 2006 à 14:31:07

                      Citation : chicour-59


                      char* rechercher(const char chaine[], int caractereARechercher)
                      {
                          long i = 0;
                          char *resultat = "NULL";
                          while (chaine[i] != 0)
                          {
                              if(chaine[i] == caractereARechercher)
                              {
                                  resultat = &(chaine[i]);
                                  break;
                              }
                              i++;
                          }
                          return resultat;



                      Ok, c'est pas mal. Je ne sais pas ce que tu crois faire avec
                      char *resultat = "NULL";

                      mais j'ai comme l'idée que tu voulais ceci :
                      char *resultat = NULL;

                      Citation : chicour-59


                      j'ai fait une recherche de 'a' par rapport a programmeur et ca me retourne 'e'.


                      Comment tu le sais ? Tu n'a pas montré le code de test.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !
                      Anonyme
                        12 avril 2006 à 15:19:37

                        voila j'ai reussi a le faire comme ca :

                        char* rechercher(const char chaine[], int caractereARechercher)
                        {
                            long i = 0;
                            char *resultat = 0, *resultatNull = 0;
                            while (chaine[i] != 0)
                            {
                                if(chaine[i] == caractereARechercher)
                                {
                                    resultat = &chaine[i];
                                    return resultat;
                                }
                                i++;
                            }
                            return resultatNull;

                        }


                        -ed- tu as raison c'est le "NULL" qui fesait buggé.
                        mais quand je met par ex

                        char *pointeur = NULL;

                        ben quand je compile ca me dit "NULL undeclared" ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 avril 2006 à 16:06:31

                          Citation : chicour-59

                          char *pointeur = NULL;


                          ben quand je compile ca me dit "NULL undeclared" ...


                          Ajoutes
                          #include <stddef.h>

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                          Anonyme
                            12 avril 2006 à 19:54:35

                            ok merci beaucoup pour ton aide :p
                            • Partager sur Facebook
                            • Partager sur Twitter

                            question sur la base d'un fonction

                            × 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