begin process at 2012 02 09 08:34:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > STRING COMPARE

STRING COMPARE


 Description

ben j'ai juste re-ecrit un strcmp parce que j'en avais besoin, alors le voila, c'est bien con, mais bon ...

Source

  • #include <stdlib.h>
  • int strcmp(char*,char*);
  • void 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);
  • }
  • }
#include <stdlib.h>

int strcmp(char*,char*);

void 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);
}
}

 Conclusion

Compilateur : GCC
Version 3.3.4
option a la compil : nada
erreur : une (j'ai du mal avec le void main (void) )

Insultes et cheques de remerciements au bas de cette source, je vous prie :p


 Sources du même auteur

TRIE UN TABLAU D'ENTIER
INT ARGC, INT *ARGV[]
EXEMPLE (TOUT BETE) DE CLASS POUR LES NEOPHYTES
METTRE LE RESULTAT D'UNE COMMANDE DOS DANS UN FICHIER
ENVOYER UN MAIL AU DEMARRAGE DU PC

 Sources de la même categorie

Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53
FONCTION : CHAR * AJUSTERTAILLECHAINE() par Rockanos

Commentaires et avis

Commentaire de AlexMAN le 07/07/2004 01:00:23

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

Commentaire de BlackGoddess le 07/07/2004 09:48:52

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;
}

Commentaire de neo_00110010101 le 07/07/2004 12:18:45

Voilà le code (mais sans les corrections de BlackGoddess, ça serait trop facile ^^)

#include &lt;stdlib.h&gt;

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 !

Commentaire de BlackGoddess le 07/07/2004 14:01:24

bin ... bis ... (g réindenté ton code avant de lire et commenter)

Commentaire de djl le 07/07/2004 20:35:23

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;
}

Commentaire de AlexMAN le 07/07/2004 20:37:25

Pourquoi appelles tu ca le style k&r (Kernighan et Ritchie je suppose..) ??

Commentaire de djl le 07/07/2004 20:54:25

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;
}

Commentaire de AlexMAN le 07/07/2004 20:59:34

ok merci djl...

++

Commentaire de zinotron le 08/07/2004 00:06:09

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 :-)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales