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