Erreur de segmentation...

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;
}
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. 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. 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 ;-)
      1. Contributeur
        Enfin, ouvrir deux fois le même fichier, ce n'est pas très propre, surtout comme ça.