Erreur de segmentation...

greeneyed Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai un probleme lors de l'exécution d'un programme de C.
Alors je ne vais pas vous donner tout le projet a lire, je pense que vous n'avez pas que ca a faire (!!), néanmoins voici le début du main.c, qui donne aboutit sur une erreur de segmentation sans meme afficher les lignes de test (cf printf(test1). Si quelqu'un a une idée du pourquoi et du comment, je suis preneur !!
Merci d'avance.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "liste.h"
#include <time.h>
#define MAX 20
#define TEMPS_MAX 10800
#define TEMPS_MIN 3600

int main(void)
{
int nbre_etape,nbre_equipe,dossard;
char equipe[MAX],nom[MAX],prenom[MAX];
int i,j,k;
FILE *pfich;
struct liste *Ma_Liste;
struct coureur *C;
int temps_init=0;
int temps_etape;
int Resultat_Dopage;

printf("test1");
//initialisation de la fonction aleatoire srand
srand(time(NULL)) ;

// on ouvre le fichier en lecture

pfich=fopen("./listetourdefrance.txt","r");

// on teste si il y a une erreur d'ouverture

if((pfich=fopen("./listetourdefrance.txt","r"))==NULL)
{

printf("Erreur ouverture\n");

exit(0);
}
printf("test2");

// on recupere le nombre d'etapes et d'equipe dans le fichier txt

fscanf(pfich,"%d\n", &nbre_etape);
fscanf(pfich,"%d\n", &nbre_equipe);

// on initialise la liste

Init_list(Ma_Liste);

// pour chaque equipe

printf("Liste initialisee");

for (i=0;i<nbre_equipe;i++)
{
// on recupere le nom de l'equipe
fscanf(pfich,"%s",equipe);

// pour les 5 membres d'une equipe

for (j=0;j<5;j++)
{
// on recupere le nom, prenom, et dossard
fscanf(pfich,"%s %s %d\n",nom,prenom,&dossard);

// on cree une struct coureur avec ces donnees
C=Creer_Coureur(nom,prenom,dossard,equipe,temps_init);

// on le rentre dans Ma_Liste
Ajouter(Ma_Liste,C);
}
}
return 0;
}

3 réponses

Utilisateur anonyme
 
J'ai voulu voir si je pouvais t'aider alors j'ai copier coller le début de ton code (jusqu'au printf car tu dis que chez toi il ne s'affiche pas).
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#define MAX 20
#define TEMPS_MAX 10800
#define TEMPS_MIN 3600

int main(void)
{
   int nbre_etape,nbre_equipe,dossard;
   char equipe[MAX],nom[MAX],prenom[MAX];
   int i,j,k;
   FILE *pfich;
   struct liste *Ma_Liste;
   struct coureur *C;
   int temps_init=0;
   int temps_etape;
   int Resultat_Dopage;

   printf("test1");
  
   system("pause");
}


Il marche parfaitement chez moi.
Tu remarqueras que j'ai du retirer ton #include "liste.h". Donc ça pourrait venir de ce que tu as dans ton liste.h
1
Utilisateur anonyme
 
Petite remarque (mais ce n'est pas de là que vient l'erreur) : tu fais deux fopen().
La première fois tu l'ouvres sans savoir si ça se fait bien.
La deuxième fois tu l'ouvres en faisant gaffe à "est-ce que ça l'a bien ouvert ?".
Le premier est donc inutile ;-)
0
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Enfin, ouvrir deux fois le même fichier, ce n'est pas très propre, surtout comme ça.
0