egalité de deux chaînes de caractères à n éléments près
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:
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.