Rechercher : dans
Par :

Fonction strcmp en C

Dernière réponse le 28 oct 2008 à 19:25:25 friday, le 28 oct 2008 à 19:07:06 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « fonction strcmp en C » dans :
Les fonctions en C++ : surcharge et paramètres par défaut. Voir Les fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Langage C - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Les classes en langage C++ VoirLa notion d'objet Le langage C est un langage procédural, c'est-à-dire que c'est un langage permettant de définir des données grâce à des variables, et des traitements grâce aux fonctions. L'apport principal du langage C++ par rapport au...

1

SebManfred, le 28 oct 2008 à 19:09:52

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

Répondre à SebManfred

2

friday, le 28 oct 2008 à 19:17:28

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 ...

Répondre à friday

3

 fiddy, le 28 oct 2008 à 19:25:25
  • +1

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.
Google is your friend

Répondre à fiddy