Chaine de caractère

Résolu
istabandal -  
ellana29460 Messages postés 707 Date d'inscription   Statut Membre Dernière intervention   -
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;
}
A voir également:

3 réponses

ellana29460 Messages postés 707 Date d'inscription   Statut Membre Dernière intervention   172
 
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;
}
0
istabandal
 
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
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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à.
0
ellana29460 Messages postés 707 Date d'inscription   Statut Membre Dernière intervention   172
 
ok. je met ça comme ça pour être sur que ça plante pas (et mon compilateur fait le tri pour moi dans tout ça ^^)
0
istabandal
 
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
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 :-))).
0