Solution de l’exercice 3.5

Voici un exemple de solution :

int strcmp(char *s1, char *s2){     while ( (*s1) && (*s2) && (*s1 == *s2) )            { s1++; s2++; }     return *s1 -*s2;}

Brève explication : la boucle while s’arrête lorsque l’une des conditions suivantes est rencontrée : soit l’une des deux chaînes a été lue entièrement ; dans ce cas, si c’est aussi le cas de l’autre, les deux chaînes sont égales, et comme *s1 == *s2 == 0, on a bien le résultat souhaité. Sinon, si par exemple *s2 == 0, mais *s1 != 0, la chaîne s1 est plus longue que s2, donc supérieure, et l’on renvoie *s1 qui est > 0, soit le résultat souhaité.

Deuxième cas d’arrêt de la boucle : on rencontre deux caractères différents. Dans ce cas, il est normal de renvoyer leur différence, qui indique précisément l’ordre des deux chaînes.


Retour au texte.