Chaine de caractère
Résolu
istabandal
-
ellana29460 Messages postés 805 Statut Membre -
ellana29460 Messages postés 805 Statut Membre -
salut. j'ai problème avec la comparaison de deux chaines de caractère(sans utiliser strcmp). je n'arrive pas affiche la réponse 0 si toutes les deux chaines sont identique et 1 si elles ne le sont pas.
voici le code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int comparech(char ch1[], char ch2[])
{
int i=0,j=0;
int cpt=0;
if(strlen(ch1)==strlen(ch2))
{
while(ch1[i]!='\0')
{
while(ch2[j]!='\0')
{
if(ch1[i]==ch2[j])
{
cpt++;
}
i++,j++;
}
}
if(cpt==strlen(ch1))
{
return 0;
}
else
{
return 1;
}
}
return 1;
}
int main()
{
char ch3[50]; char ch4[50];
printf("entrer une chaine de carctère: ");
gets(ch3);
printf("entrer encore une autre chaine de caractere: ");
gets(ch4);
comparech(ch3,ch4);
return 0;
}
voici le code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int comparech(char ch1[], char ch2[])
{
int i=0,j=0;
int cpt=0;
if(strlen(ch1)==strlen(ch2))
{
while(ch1[i]!='\0')
{
while(ch2[j]!='\0')
{
if(ch1[i]==ch2[j])
{
cpt++;
}
i++,j++;
}
}
if(cpt==strlen(ch1))
{
return 0;
}
else
{
return 1;
}
}
return 1;
}
int main()
{
char ch3[50]; char ch4[50];
printf("entrer une chaine de carctère: ");
gets(ch3);
printf("entrer encore une autre chaine de caractere: ");
gets(ch4);
comparech(ch3,ch4);
return 0;
}
3 réponses
-
j'ai modifie ton code, et ceci fonctionne :
#include<stdio.h> #include<conio.h> #include<string.h> int comparech(char ch1[], char ch2[]) { int i=0, j=0; while( *(&ch1+i) != '\0') ///tant que la valeur de ce qui est a l'adresse memoire ch1+i est dofferent de '\0' i++; j=i; for(i=0;i<=j;i++) { if(ch1[i] != ch2[i]) return 1; ///les deux chaines sont dfferntes } return 0; ///les deux chaines sont identiques } int main() { char ch3[50]; char ch4[50]; printf("entrer une chaine de carctère: "); gets(ch3); printf("entrer encore une autre chaine de caractere: "); gets(ch4); printf("%d",comparech(ch3,ch4)); return 0; } -
Merci ##ELLANA 29460##, je viens de voire mon erreur. c'était au niveau de l'appel de la fonction. j'ai juste ajouté le printf de ton programme principal et ça marche aussi!!
merci neaucoup -
Bonjour,
Attention, gets() est obsolète. On utilise à la place fgets().
Ces deux fonctions stockent également le \n. Il faut donc penser à le retirer. Sinon gare aux mauvaises surprises.
Je mets en résolu puisque tu sembles avoir trouvé la solution :-))).