Quel est le but de cette fonction ?

Fermé
hazimgdl Messages postés 20 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 18 mai 2011 - 17 mai 2011 à 00:59
 hazimgdl - 20 mai 2011 à 17:50
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

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
Modifié par Hxyp le 17/05/2011 à 09:09
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
Tu lui as fais son exercice là.
0
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
17 mai 2011 à 09:15
Je ne savais pas que c'était un exercice ! Y avait aucune précision
0
hazimgdl Messages postés 20 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 18 mai 2011 3
Modifié par hazimgdl le 18/05/2011 à 01:16
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
Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
18 mai 2011 à 10:43
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
ah je vois, Merci enomément Hxyp
0