Quel est le but de cette fonction ?

Bonjour,
Pouvez vous em dire quel est le but de cette fonction ?

int func(char s1[], char s2[])
{
int i=0,j=0;

while (s1[i]!='\0')
{
j=0;
while (s2[j]!='\0' && s1[i+j]!=0)
{
if (s1[i+j]!=s2[j])
break;
j++;
}
if (s1[j]=='\0') return i;
i++;
}
return -1;
}

1 réponse

  1. Bonjour,
    C'est une comparaison de deux chaines si la chaine 2 n'est pas identique à la 1 la fonction retourne -1 si elles sont identiques* alors 0
    *Elle utilise la taille de la chaine 1
    dans le premier while s1[i]!='\0' tant qu'on arrive pas en bout de s1
    et dans le second while s1[i+j]!=0 tant qu'on arrive pas en bout de s1
    du coup elle ne compare qu'avec la longueur de la chaine s1 sur la chaine s2
    Et donc la première boucle n'est pas utile
    int func(char s1[], char s2[])
      {
        int i=0;
        while(s1[i]!='\0'){
            if(s1[i]!=s2[i])
                return -1;
            i++;
        }
        return 0;
    }
    0
    1. Tu lui as fais son exercice là.
      0
    2. Je ne savais pas que c'était un exercice ! Y avait aucune précision
      0
    3. C'était pas un exercice mon ami, merci Hxyp pour ta réponse.
      Je crois que j'ai quelque chose faux sur la fonction pour le s1[i+j] cé !='\0' pas 0 et à la fin cé if s2[j]=='\0' pas s1.
      Libérez le savoir, arrêtez de jouer les profs.
      0
    4. Avec s2 à la place de s1 le but de la fonction est de retourner la position i dans la chaine s1 là où commence s2 si celle-ci est trouvée, sinon retourne -1
      0
    5. ah je vois, Merci enomément Hxyp
      0