Recréer la fonction strstr

qubs Messages postés 3 Date d'inscription dimanche 30 avril 2006 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 00:48
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 17 juil. 2009 à 15:48
Salut,

J'aimerais recoder la fonction strstr mais je n'arrive pas a aboutir et a comprendre le fonctionnement, j'aimerais bien un coup de main svp. =p

Voici mon code source :
#include <stdio.h>
#include <stdlib.h>

int Size_String (char *String);
int Comp_String (const char *String_1, const char *String_2);
char *String_In_String (const char *String_1, const char *String_2);

int main(int argc, char *argv [])
 {
     char *Next_String;

     Next_String = String_In_String ("Petit texte de test", "test");

     if (Next_String != NULL)
      {
          printf("L'occurrence est : %s.\n", Next_String);
      }


    return 0;
 }

int Size_String (char *String)
 {
     char Character = 0;
     int Number_Of_Character = 0;

     do
      {
          Character = String [Number_Of_Character];
          Number_Of_Character ++;
      } while(Character != '\0');

    return Number_Of_Character;
 }
int Comp_String (const char *String_1, const char *String_2)
 {
     int Size 0, Size_1 0, Size_2 = 0, Comp = 0, i;

     Size_1 = Size_String (String_1);
     Size_2 = Size_String (String_2);

     Size = Size_1 - Size_2;

     if (Size == 0)
      {
          for(i=0; i<Size; i++)
           {
               if (String_1 [i] == String_2 [i])
                {
                    Comp = 0;
                    //printf("Les chaines sont identiques.\n\n");
                    return Comp;
                }
           }
      }

     else
      {
          if (Size > 0)
           {
               Comp = 1;
               printf("Les chaines sont differentes, la premiere etant plus grande que la seconde.\n\n");
               return Comp;
           }

          if (Size < 0)
           {
               Comp = -1;
               printf("Les chaines sont differentes, la premiere etant plus petite que la seconde.\n\n");
               return Comp;
           }
      }
 }

char *String_In_String (const char *String_1, const char *String_2)
 {
     int Size 0, Size_1 0, Size_2 = 0, Comp = 0, i, k;
     char *Occurrence = 0;

     Size_1 = Size_String (String_1);
     Size_2 = Size_String (String_2);

     Comp = Comp_String (String_1, String_2);

     for(i=0; i<Size_1; i++)
      {
          for(k=0; k<Size_2; k++)
           {
               if ( (String_1 [i] == String_2 [k]))
                {
                    return String_1 - Size_2;
                }
           }
      }

    return NULL;
 }
A voir également:

5 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
17 juil. 2009 à 12:47
Désolé mais cette seconde version, bien qu'ammélioré n'est pas correcte non plus. (Erreur dans le dernier else) Voila une fonction de comparaison:

A+

int Comp_String(char *str1, char *str2)
{
char *P=str1,*Q=str2;
int comparaison=1;
while(*P !='\0' || *Q !='\0')
{
if(*P!=*Q){comparaison=0;break;}
P++;Q++;
}
return comparaison;

}

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
1
Rejoignez-nous