Fonction strcmp en C

friday -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
voila je cherche a utiliser la fonction strcmp dans une fonction de cette maniere (pas simple mais je vais essayer d'etre le plus claire possible) :

J'ai d'un coté dans un fichier main.c:

const char *mot1;

et de l'autre une structure defini ainsi dans le fichier structure.c:

struct StructureP {
char *phrase[];
};
J'ai defini dans mon fichier structure.h la structure comme ça :

struct StructureP;
#define Structure struct StructureP *

Ma fonction est la suivante :

bool fonction(Structure s, const char *mot1)
...
if(strcmp(s->phrase[i],mot1)==0) ...
...
}

Et lorsque je compile pour la fonction strcmp j'ai une erreur de segmentation ... je pense que c'ets du a un probleme de malloc mais je suis un peu perdu donc si vous pouvez m'aider svp !!!
Merci beaucoup !
Cdt
Configuration: Linux
Firefox 3.0.3

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Que c'est moche le #define Structure ... C'est beaucoup mieux d'utiliser typedef.
    Oui effectivement tu dois allouer s->phrase[i] avec un malloc ou l'allouer de manière statique. strcpy ne réalise pas l'allocation.
    1
  2. SebManfred Messages postés 484 Date d'inscription   Statut Membre Dernière intervention   128
     
    Salut,

    si c'etait un pb de malloc, tu ne le verrais pas à la compil, mais à l'execution
    l'erreur vient plutot du fait que s est une structure, et non pas un pointeur vers la structure
    tu dois donc faire s.phrase[i], et non pas s->phrase[i]
    essaie comme ca et vois ce que ca donne
    @+
    Seb
    0
  3. friday
     
    Bonjour, et merci de me repondre,
    effectivement ce n'est pas a la compilation mais a l'execution que j'ai le pb de segmentation . De plus,j'ai defini
    struct StructureP;
    #define Structure struct StructureP *
    donc Structure est bien un pointeur vers StructureP, donc il faut utiliser -> et non .
    Aprés je coince ...
    0