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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Partager