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

Icebibi Messages postés 6 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 27 mai 2008 - 29 avril 2008 à 14:48
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 30 avril 2008 à 00:06
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

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
29 avril 2008 à 16:24
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++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
29 avril 2008 à 16:25
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++ (@++)<!--
0
Icebibi Messages postés 6 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 27 mai 2008
29 avril 2008 à 16:41
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...
0
Icebibi Messages postés 6 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 27 mai 2008
29 avril 2008 à 17:52
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
29 avril 2008 à 22:10
Ça fonctionne sans problème pour moi.

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

???

C++ (@++)<!--
0
Icebibi Messages postés 6 Date d'inscription mardi 5 février 2008 Statut Membre Dernière intervention 27 mai 2008
29 avril 2008 à 23:19
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...
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
30 avril 2008 à 00:06
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++ (@++)<!--
0