Fonction strcmp en C

friday -  
fiddy Messages postés 11069 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
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
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
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