Chaine de caractère en paramètre...

Signaler
Messages postés
6
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
27 mai 2008
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
bonjour à tous. je sais pas si le titre du topic est vraiment bien adapté, vous allez binen voir. en fait mon problème c'est que je tente de faire un programme qui à un moment lit un fichier texte jusqu'au moment où il trouve le mot "interpretation". une fois ce mot trouvé il compare une partie de la chaine qui suit à une chaine que j'ai passé en paramètre. et c'est pour faire çà que je bloque. j'attends vos remarques avec impatience ou bien si quelqu'un a une autre idée...
merci

...l'apprentissage de la programmation...

7 réponses

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
strncmp non ?

Tu récupères un pointeur après le mot interpretation puis te le passe à strncmp.
Exemple:

const char chainecmp[] = " ceci est la chaine qui devrait suivre";
char *c = strstr(chaine, "interpretation");

c += 14;
strncmp(c, chainecmp, sizeof(chainecmp)-1);

C++ (@++)<!--
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Oups pardon:

if(!strncmp(c, chainecmp, sizeof(chainecmp)-1)) {
    // C'est bon
}
else {
    // La chaine qui suis le pointeur c n'est pas équivalent à chaincmp
}

C++ (@++)<!--
Messages postés
6
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
27 mai 2008

merci. pour le strcmp je savais, mais je savais pas comment prendre en compte la chaine après "interprétation" et la comparer à une chaine que j'ai entré. je vais tester et je te tiens au courant. encore merci

@+

...l'apprentissage de la programmation...
Messages postés
6
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
27 mai 2008

le "c" c'est la longueur de la chaine? parce que quand je le compile comme çà, il me donne une erreur comme quoi il est impossible de convertir const char* en char*. et lorsque je remplace le char *c par const char *c, il me crée l'exécutable, mais en le lançant je reçois une fenêtre avec le message d'erreur "Exception non gérée à 0x66f14e23 dans parsing.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x0000000e."
si tu sais ce qu'est le problème...merci
...l'apprentissage de la programmation...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Ça fonctionne sans problème pour moi.

Est-ce que ça fonctionne si tu fais un cast:
char *c = (char*)strstr(chaine, "interpretation");

???

C++ (@++)<!--
Messages postés
6
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
27 mai 2008

j'ai toujours la même fenêtre d'erreur qui apparaît. la compilation fonctionne, c'est lorsque je lance le programme. çà provient peut-être du compilateur. je vais tester avec un autre et je te préviendrai. merci

...l'apprentissage de la programmation...
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
Non ça ne provient pas du compilateur. Ce type d'erreur est généralement causé par un débordement tampon.

L'erreur vient du code.

C++ (@++)<!--