Chaine de caractère

Résolu
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;
}

3 réponses

  1. 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;
    }
    
    1. 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
    2. Contributeur
      ellana29460,
      while( *(&ch1+i) != '\0')
      ch1 est déjà un pointeur. Donc pas besoin de &. De plus, ce que tu écris est exactement la même chose que ch1[i]. Donc l'erreur ne se situe pas là.
    3. ok. je met ça comme ça pour être sur que ça plante pas (et mon compilateur fait le tri pour moi dans tout ça ^^)
  2. 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
    1. Contributeur
      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 :-))).