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;
}