Bonjour à tous,

Voilà que je trouve ce code sur wikipedia au sujet de strcmp, et ça me tracasse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int strcmp (const char* s1, const char* s2) {
    while ( (*s1++ == *s2++) && (*s1 != '\0') );
    return (*(unsigned char *)--s1 - *(unsigned char *)--s2);
}
Je me moque du return, c'est le while qui me pose problème. En imaginant que *s1==0 et *s2==0 (dès le départ, par exemple), la première condition du while sera vérifiée, donc s1 et s2 auront chacun leur ++. Mais alors qu'en est-il de la seconde condtion du while: *s1!=0 ? Puisque *s1 valait déjà 0, *(s1++) est indéterminé. Ne faudrait-il pas inverser les deux conditions dans le while ?

Bien à vous

Edgar;

EDIT: je me suis mal exprimé. Le ++ aura lieu bien sur, quel que soit le résultat du test....