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
sarrête lorsque lune des conditions suivantes est rencontrée : soit lune des deux chaînes a été lue entièrement ; dans ce cas, si cest aussi le cas de lautre, 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 lon renvoie *s1
qui est > 0, soit le résultat souhaité.
Deuxième cas darrê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 lordre des deux chaînes.