Salut tous,

L'idée est simple : mettre au point une fonction qui teste si les n premiers caractères de deux chaînes sont égales, renvoie 1 le cas échéant, 0 sinon.

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
31
32
 
int egal_n_ch(int n, char ch1[], char ch2[])
{
    int rtn;//la valeur retournée
    int i=1;// compteur
    if(n>strlen(ch1) || n>strlen(ch2)) rtn=0; // cas où l'on dépasse les tailles des chaînes
    else
    {
        if(ch1[0]==ch2[0])
        {
            while(ch1[i]==ch2[i] && i<=n)
            {
              i++;
            }
 
            if(i==n) rtn=1; // on a égalité des n premiers caractères !
        }
        else rtn=0;
    }
 
    return rtn;
}
 
int main()
{
 
    char  ch1[]="achille";
    char  ch2[]="achillus";
    printf("%d",egal_n_ch(4,ch1,ch2));
 
    return 0;
}
A ma surprise, le résultat est invariablement 16384, et donc ? Voilà, si vous comprenez quelque chose, moi je sèche...Merci tous.