Bonsoir à tous
J'ai un problème sur une question : je dois en fait comparer deux chaines de caractères sans utiliser la fonction de string.h et en ne prenant pas en compte les casses de caractère.
J'ai donc créer ce sous programme en C :
et dans le programme principal :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46 int comparaison(const char * chaine1,const char * chaine2) { int i; i=0; int j ; j=0; int celuiQuiVrai; int cpt1 = 0; int cpt2 = 0; while((chaine1[i]!='\0') && (chaine2[j]!='\0')) { if((chaine1[i]==chaine2[j])) { cpt1++; cpt2++; i++; j++; } if(chaine1[i]>chaine2[j]) { cpt2++; i++; j++; } if((chaine1[i]!='\0') && (chaine2[j]=='\0')) { cpt1++; i++; } if((chaine1[i]=='\0') && (chaine2[j]!='\0')) { cpt2++; j++; } } celuiQuiVrai=-1;// si il retourne - 1 alors la chaine1 est plus grande que la chaine2 if(cpt1>cpt2) { celuiQuiVrai=1; } if(cpt1==cpt2) { celuiQuiVrai=0; } return celuiQuiVrai; }
les allocations des chaines ont bien été faite avant avec la saisie puisque j'ai tester, en tout cas le sous programme ne marche pas du tout et je ne comprend pas pourquoi ? je ne sais pas si ça vient du fait qu'on est deux valeur pointé en paramètre...
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 //Comparaison de deux chaines vrai=comparaison(chaine1,chaine2); printf("\n%d",vrai); if( vrai == 0) { printf("\n%s et %s sont identiques\n",chaine1,chaine2); } if(( vrai!=0 && vrai!=1)) { printf("\n%s est inferieur a %s \n",chaine1,chaine2); } if( vrai == 1) { printf("\n%s est superieur a %s\n",chaine1,chaine2); } printf("\n____________FIN\n");
Je vous remercie d'avance
Cordialement![]()
Partager