begin process at 2010 02 10 01:11:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

comparaison de chaine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comparaison de chaine

lundi 11 octobre 2004 à 20:49:44 | comparaison de chaine

erwan35

Bonjour à tous,

Je voudrais comparer les 8 derniers caractères d'une chaine de caractères en c++(v1.5), si elle sont égales alors action1 sinon action2.

J'ai déja essayer de réaliser qqc mais à chaque fois il me réponds que les chaines sont identiques.

Merci d'aider le débutant que je suis.

Erwan
lundi 11 octobre 2004 à 21:36:15 | Re : comparaison de chaine

Hades53

Membre Club
Salut!


#include <string.h>
int cmp(char *str1,char *str2) {
int max1 = strlen(str1), max2 = strlen(str2), p1 = max1 - 5, p2 = max2 - 5;
if (max1 < 5 || max2 < 5) return 0;
for (int i = 0;i < 5;i++) if (str1[p1+i] != str2[p2+i]) return 0;
return 1;
}


Usage: cmp(chaîne1,chaîne2), retourne 1 si les cinq derniers caractères de deux chaînes sont identiques.
lundi 11 octobre 2004 à 21:38:27 | Re : comparaison de chaine

Hades53

Membre Club
Arf j'ai mal lu, pour les huit derniers caractères, il suffit de remplacer les "5" par des "8" (sans les guillemets bien sûr).
lundi 11 octobre 2004 à 21:38:54 | Re : comparaison de chaine

Hylvenir

Qu'est que tu as déjà fait ?

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
lundi 11 octobre 2004 à 22:00:18 | Re : comparaison de chaine

erwan35

Merci pour votre aide!

J'ai placé le module de Hades53 à la fin de mon code et ceci dans mon code :

if (cmp(CodeA,CodeAprime)==1){
im_clear_screen();
Affiche(0,0,"A ");
Affiche(0,3,CodeA);
Affiche(1,0,"A' ");
Affiche(1,3,CodeAprime);
Affiche(5,0,"Si OK_______ Enter");
}

J'obtiens les erreurs suivantes :

c:\docume~1\famille\bureau\copied~1\trakker.c(550) : error C2143: syntax error : missing ';' before 'type'
c:\docume~1\famille\bureau\copied~1\trakker.c(550) : error C2143: syntax error : missing ';' before 'type'
c:\docume~1\famille\bureau\copied~1\trakker.c(550) : error C2062: type 'int ' unexpected
c:\docume~1\famille\bureau\copied~1\trakker.c(550) : error C2065: 'i' : undeclared identifier
c:\docume~1\famille\bureau\copied~1\trakker.c(550) : error C2143: syntax error : missing ';' before ')'

la ligne 550 est la ligne qui contient le for

Voyez vous d'où ça vient?
lundi 11 octobre 2004 à 22:21:48 | Re : comparaison de chaine

Hades53

Membre Club
Place le module au début ou dans un fichier .h.
Si tu le places à la fin, ça risquera vraiment pas de marcher.
lundi 11 octobre 2004 à 22:25:30 | Re : comparaison de chaine

Hades53

Membre Club
Réponse acceptée !
Tiens essaye dans ce format:


int cmp(char *str1,char *str2) {
int max1 = strlen(str1);
int max2 = strlen(str2);
int p1 = max1 - 8;
int p2 = max2 - 8;
int i = 0;
if (max1 < 8 || max2 < 8) return 0;
while (i < 8) {
if (str1[p1+i] != str2[p2+i]) return 0;
i++
}
return 1;
}
mardi 12 octobre 2004 à 00:15:45 | Re : comparaison de chaine

erwan35

merci beaucoup!

Ca marche à la perfection!
mardi 12 octobre 2004 à 16:27:58 | Re : comparaison de chaine

vecchio56

Administrateur CodeS-SourceS
Solution plus propre: utiliser strncmp, cette fonction est faite pour comparer les n premiers caractères de deux chines
strncmp(str1, str2, n);
renvoie un résultat du même type de strcmp (nul si egal...)
mardi 12 octobre 2004 à 18:01:25 | Re : comparaison de chaine

djl

erwan35 > sincerement prefere la solution de vecchio56

et on est bien d'accord qu'en c++ tu aurais tout a gagner a utiliser std::string...


Cette discussion est classée dans : chaine, comparaison, caractères


Répondre à ce message

Sujets en rapport avec ce message

HELP...chaine de caractères....en C..défi TP [ par SniPi ] Voici un exercice bien sympatique à faire en C.Je vous passerez le corrigé de ce TP mercredi prochain, en attendant j'aimerais voir ce que vous pensez Copie d'une chaine Hexa dans une Chaine de caractères [ par lyde ] Bonjour,je souhaiterais copier la chaine hexa "010601AE0205040045" dans une variable de type TCHAR * qui est quasiment equivalente a un char *.Cependa int => chaine de caractères ? [ par kjus ] vala, il me faudrait transformer une variable int en chaine de caractère.Y a-t-il une fonction toute faite ?en fait, mon but est de l'inscrire dans un Pointeurs et copie de caractères [ par Vaughn018 ] Bonjour,La mémoire ne peut etre 'written', un grand classique mais dans mon cas j'ai du mal à comprendre. Mieux vaut du code que des explications, alo Construction d'un arbre à partir d'une chaine de caractères [ par dahlsimus ] Bonjour, Je souhaite construire un arbre représentant une expression booléenne saisie sous le forme d'une chaîne de caractère (ex: (a+b).C avec + OR e chaine de caractères et fichier [ par wanny ] Bonjour.Je voudrais savoir comment faire pour supprimer une chaine de caractères spécifiques dans un fichier texte...Merci d'avance.wanny transformer un caractère en une chaine de caractères [ par zarce ] bonjour j'utilise une fonction qui affiche à l'écran (graphique) des chaines de caractères la syntaxe est du style ...DrawString(posX,posY, chaine de chaine de caractères [ par Goldberg ] Bonjour, comment faire ern C pour 1) introduire deux chaines de caractère (en fait rien que des valeurs numériques) 2) pouvoir additionner les prem Découpage de n premiers caractères d'une chaine [ par Guidelor ] BonjourJ'ai une chaine1 ="aaaaaaaaa123456"J'aimerais enlever "aaaaaaaaa"comment faire sachant que ce que je ve enlever est situé entre le 1er et le 10 Comparaison de chaine [ par anek971 ] Bonjour a tous,ben enfaite je c ca parait bete mais j'ai un agneda a faire j'arrive a faire tt les fontcions sauf la comparaison de chaines,bah enfait


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,718 sec (3)

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