la comparaison de chaine de caractères
Bonjour,
mon enseignant m'a donné le corrigé de l'exercice ci-dessous, mon problème est que je ne comprends pas
Pourquoi cette ligne if((s1[i] == '\0') && (s2[i] == '\0')) a pour signification "s1 et s2 sont égales"?
Pourquoi utilise t-on \0 pour montrer qu'elles sont égales?
Pourquoi cette ligne: if(s1[i]=='\0') a pour signification "si s1 est plus petit"?
Pourquoi doit-on utiliser les * (les pointeurs) dans les paramètres de cette fonction: int compareStrings(char * s1, char * s2)?
Merci d'avance
Exercice :Comparaison de chaînes de caractères
On souhaite écrire une fonction compareStrings comparant deux chaînes de caractères. Cettefonction retournera -1 si la première chaîne est avant la seconde dans l'ordre lexicographique, 1 si elle est après, et 0 si elles sont égales.
Corrigé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int compareStrings(char * s1, char * s2)
{
int comp = 0;
int i = 0;
while((s1[i] != '\0') && (s2[i] != '\0') && (comp == 0))
{
comp = s1[i]-s2[i];
i++;
}
if(comp == 0)
{
/** s1 et s2 �gales */
if((s1[i] == '\0') && (s2[i] == '\0'))
return comp;
/** s1 plus petite */
if(s1[i]=='\0')
return -1;
/** s2 plus petite */
if(s2[i]=='\0')
return 1;
}
/** s1 plus petite */
if(comp < 0)
return -1;
/** s2 plus petite */
return 1;
} |