STRING COMPARE

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 7 juil. 2004 à 01:00
zinotron Messages postés 65 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 11 septembre 2004 - 8 juil. 2004 à 00:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24331-string-compare

zinotron Messages postés 65 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 11 septembre 2004
8 juil. 2004 à 00:06
Mais pourquoi vous avez ecris des trucs de malades incomprehensibles ?
J'y capte rien a ta source djl ...
enfin, si, un peu maintenant ...
mais je ne savais pas qu'on avait le droit de faire un for sans variable ...
en tout cas, merci a tous :-)
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 20:59
ok merci djl...

++
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 juil. 2004 à 20:54
les code condensée (ok c'est pas le meilleur exemple) et puis surtout quand c'est pre ansi (on appel c k&r le c pre ansi)
c'est pour ca que j'ai pas mi les const non plus, j'aurais mem peu ecrire avec passage en parametre à la k&r et la regle du int implicite

strcmp(s, t)
char s[]; char t[];
{
for ( ; *s == *t; s++, t++)
if (*s == '\0')
return 0;
return *s - *t;
}
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 20:37
Pourquoi appelles tu ca le style k&r (Kernighan et Ritchie je suppose..) ??
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 juil. 2004 à 20:35
dans le style k&r, code condensé avec boucle for

int strcmp(char *s, char *t)
{
for ( ; *s == *t; s++, t++)
if (*s == '\0')
return 0;
return *s - *t;
}
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
7 juil. 2004 à 14:01
bin ... bis ... (g réindenté ton code avant de lire et commenter)
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
7 juil. 2004 à 12:18
Voilà le code (mais sans les corrections de BlackGoddess, ça serait trop facile ^^)

#include <stdlib.h>

void strcmp(char*,char*);

int main(void)
{
char chaine1[255],chaine2[255];
int res = 0;

printf("Comparateur de Chaine par MoI :p \n");
printf("Rentrez la premiere chaine\n");
scanf("%s",chaine1);
printf("Rentrez la seconde chaine\n");
scanf("%s",chaine2);

res = strcmp(chaine1,chaine2);

if(res == 0)
{
printf("Chaines identiques\n");
}
else
{
printf("Chaines differentes\n");
}
}

int strcmp(char* chaine1, char* chaine2)
{
int compteur1 0, compteur2 0;
int i = 0;

while(chaine1[compteur1] != '\0')
{
compteur1++;
}
while(chaine2[compteur2] != '\0')
{
compteur2++;
}
if(compteur1 != compteur2) return(compteur1-compteur2);
else
{
while((chaine1[i] == chaine2[i]) && (i != compteur1))
i++;
if( i == compteur1) return 0;
else return(i-compteur1);
}
}

A toi de corriger maintenant !
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
7 juil. 2004 à 09:48
int main, pas void

int strcmp(const char*, const char*);

printf est défini dans stdio.h (et pas stdlib.h)

3 boucles pour une fonction comme ca c'est trop !!

int strcmp(const char *str1, const char *str2)
{
int ret;
while(!(ret = (*str1 - *str2)) && *str1)
{
str1++;
str2++;
}

return ret;
}
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
7 juil. 2004 à 01:00
Comme tu peux le voir, ta source n'est pas tres bien passé...Si tu pouvais rectifier ceci, merci ;)
Pour ce ki est du code en lui mm, une fonction de comparaison de ce genre se code tres facilement, et en kelk lignes, or ici, ta fonction m'a l'air bien grande kan mm ! regarde la source de la veritable fonction strcmp, et tu t'apercevras ke celle ci travaille directement sur les pointeurs sans ne faire aucune comparaison ! Sinon, jte dirai de continuer a poster des sources de ce genre, car il faut s'entrainer pour progresser, et c'est pas tt seul dans son coin kon pourra apprendre !! Donc n'hésite pas a poster d'autres source...

++

Alhexman
Rejoignez-nous