Bonjour à tous,
Voilà que je trouve ce code sur wikipedia au sujet de strcmp, et ça me tracasse:
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 ?
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); }
Bien à vous
Edgar;
EDIT: je me suis mal exprimé. Le ++ aura lieu bien sur, quel que soit le résultat du test....
Partager