#1 Le 01/03/2017, à 20:59
- lekafre
Segmentation fault lors de l'exécution d'un programme qui compile
Bonsoir,
Je vous présente un problème qui me résiste depuis plusieurs heures..
J'ai commencé à code une application dans l'optique de gérer mes séances de cours ( je suis jeune enseignant ). J'aime avoir des applications qui répondent exactement à mes besoins.
Dans ce programme, j'ai créé deux structures (OG : objectif général et OI : objectif intermédiaire ) qui contiennent chacun un identifiant, un intitulé, une durée, etc.
Afin d'automatiser l'alimentation de ces structures, j'ai crée deux fonctions ( fill_struct_OG et fill_struct_OI) qui permettent d'ajouter des données dans les structures.
Lors de la compilation je n'ai pas de message d'erreur, mais lors de l'exécution j'obtiens "Erreur de segmentation (core dumped)"
Voici l'intégralité du fichier source
/*******************************************************************
** Entetes
*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*******************************************************************
** Déclaration des structures
*******************************************************************/
typedef struct {
char *Id;
int Duree;
char *Intitule;
int NbreOI;
int IndiceOI[2];
}OBJECTIFG;
typedef struct{
char *Id;
int Duree;
char *Intitule;
int NbreTaches;
int IndiceTaches[10];
}OBJECTIFI;
/*******************************************************************
** Prototypes
*******************************************************************/
static void fill_struct_OG( OBJECTIFG *,const char *,int,const char *, int);
static void fill_struct_OI( OBJECTIFI *, const char *, int, const char *, int);
/*******************************************************************
** Variables globales
*******************************************************************/
OBJECTIFG *OG;
OBJECTIFI *OI;
/*******************************************************************************
** Programme principal
*******************************************************************************/
int main(int argc,
char **argv){
int i;
int dim=2;
OG=(OBJECTIFG*)malloc(dim*sizeof(OBJECTIFG));
fill_struct_OG(&OG[0],"OG00" , 2 , "S'installer et préparer ses affaires", 0 );
fill_struct_OG(&OG[1],"OG01" , 2 , "S'installer et préparer ses affaires", 0 );
OI=(OBJECTIFI*)malloc(dim*sizeof(OBJECTIFI));
fill_struct_OI(&OI[0],"OI00",2,"S'installer et préparer ses affaires",0);
fill_struct_OI(&OI[1],"OI00",2,"S'installer et préparer ses affaires",0);
}
/*******************************************************************
** Définitions des sous-fonctions
*******************************************************************/
static void fill_struct_OG( OBJECTIFG *obj , const char *Id , int Duree , const char *Intitule, int NbreOI){
strcpy(obj->Id, Id);
strcpy(obj->Intitule, Intitule);
obj->Duree = Duree ;
obj->NbreOI = NbreOI;
obj->IndiceOI[0] = 1;
obj->IndiceOI[1] = 2;
return;
}
static void fill_struct_OI(OBJECTIFI *obj , const char *Id , int Duree , const char *Intitule, int Nbre){
strcpy(obj->Id, Id);
strcpy(obj->Intitule, Intitule);
obj->Duree = Duree ;
obj->NbreTaches = Nbre;
return;
}
Je compte sur votre expertise pour m'aider.. Qu'est ce que j'ai mal fait ? Comment puis-je corriger cette erreur ?
Hors ligne
#2 Le 01/03/2017, à 21:39
- grigouille
Re : Segmentation fault lors de l'exécution d'un programme qui compile
strcpy(obj->Id, Id);
fait plutôt
obj->Id = strdup(Id);
et plus loin
free(obj->Id);
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#3 Le 02/03/2017, à 00:01
- lekafre
Re : Segmentation fault lors de l'exécution d'un programme qui compile
Bonsoir grigouille et merci pour cette réponse rapide. Il semble que cela fonctionne.
Hors ligne