Bonjour/Bonsoir à tous et à toutes,
si je viens ici c'est pour que vous puissiez éclairer ma lanterne ! Cela fait un peu plus de 4h maintenant que je planche sur le problème et je ne sais plus ou aller pour pouvoir terminer ce projet à bien ! (c'est un projet de gestion de bibliothèque en C)
Je dois lire un fichier binaire (avec la fonction fread) dont voici le bout de code ci dessous
adherent_t et livres_t sont des structures définies dans mon header dont voici une partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 int charger_livres(livre_t* livres) { int nb_livres=0; flivre = fopen("fichierLivre", "ab+"); if((flivre = NULL)) { printf("Le fichier n'a pas pu être ouvert"); } rewind(flivre); while(fread(livres, sizeof(livre_t), MAX_LIVRES, flivre) != 0) { nb_livres= fread(livres, sizeof(livre_t), MAX_LIVRES, flivre); } return nb_livres; } int charger_adherents(adherent_t* adherents) { int nb_adhr=0; fadhr = fopen("fichierAdh", "ab+"); if((fadhr = NULL)) { printf("Le fichier n'a pas pu être ouvert"); } rewind(fadhr); while(fread(adherents, sizeof(adherent_t), MAX_ADHR, fadhr) != 0) { nb_adhr= fread(adherents, sizeof(adherent_t), MAX_ADHR, fadhr); } return nb_adhr; }
Comme vous le voyez les FILE machin sont en globales, donc ils ne précèdent pas les fopen.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #ifndef PRINCIPAL_H #define PRINCIPAL_H #define STR_MAX 50 #define MAX_ADHR 100 #define MAX_LIVRES 100 typedef struct { int adr_cp; char adr_ville[STR_MAX]; char adr_rue[STR_MAX]; } adresse_t; typedef struct { int adh_num; char adh_nom[STR_MAX]; adresse_t adh_adresse; int adh_nb_emprunts; } adherent_t; typedef struct { int liv_num; char liv_titre[STR_MAX]; struct { char nom[STR_MAX]; char prenom[STR_MAX]; } liv_auteur; int liv_emprunteur; } livre_t; FILE *fadhr; FILE *flivre;
Cependant, lorsque je fais ceci, que je compile, aucune erreur, tout est cool.
Quand j’exécute, je tombe sur une erreur de segmentation... Et je n'arrive pas du tout à trouver pourquoi.
J'ai demander de l'aide auprès d'amis mieux qualifié que moi en ce domaine, ils ne savent pas non plus... (et même mon meilleur amis le plus fidèle: google...)
Je fais appel alors à votre intelligence et à votre expérience afin de soulever une armée pour vaincre ces erreurs de segmentation qui nous pourrissent la vie !
En vous remerciant par avance de votre aide,
Ascheritt, codeur en bouse.
Partager