Bonjour, j'ai fini un gros programme pour mon projet mais voilà j'ai une erreur qui me semble au dessus de mes capacité:
Voici la fonction qui plante:
Or cette fonction est appelé par une autre fonction qui utilise ceci:
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 void Incr_client_nbcouvert( Stat_nb_couvert *tabclient,char* fichier){ FILE *fdate; Date sdate; printf("dae"); printf("|%s|",fichier); printf("gore"); fdate = fopen(fichier,"r"); printf("bea"); while(fread(&sdate,lenDate,1,fdate)){ //la fonction plante ici printf("g"); printf("poscl=%d ",sdate.posfclient); tabclient[sdate.posfclient].nb_couvert=tabclient[sdate.posfclient].nb_couvert+sdate.nbpersonne; printf("posfcl = %d , nbcouvert = %d\n",sdate.posfclient,sdate.nbpersonne); tabclient[sdate.posfclient].posfclient = sdate.posfclient; } fclose(fdate); printf("dac"); }
Elle lit tous les fichiers contenu dans le répertoire ou est le .c
Ce code fonctionne très bien pour faire l'affichage de toute les données de tout les fichiers qui sont dans le repertoire du .c .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void Affiche_toutes_reservation(){ struct dirent *lecture; DIR *rep; rep = opendir("." ); char nomdate[12]=" "; int i; while ((lecture = readdir(rep))) { ... //ici lecture->d_name contient tour à tour le nom de tout les fichier dans le répertoire du main .c } closedir(rep); }
Si j'appelle la fonction qui plante directement du main, ca fonctionne.
De plus ce qui pour moi me dépasse:
Si dans la fonction qui plante je fais un fopen en plus (d'un autre fichier) ca plante plus haut, au second fopen.
Ce problème doit surement venir des fichier, trop d'ouvert ou un truc comme ca... Bref je pige pas. Auriez vous une fonction qui ferme tout les fichiers qui sont ouverts?
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 void Incr_client_nbcouvert( Stat_nb_couvert *tabclient,char* fichier){ FILE *fdate; Date sdate; Client client; FILE* fclient; fclient=fopen("Client.bin","r"); printf("dae"); if (fclient == NULL){ printf("Le fichier client n'existe plus.\n"); exit(-1) ; } printf("|%s|",fichier); printf("gore"); fdate = fopen(fichier,"r"); //ca plante ici printf("bea"); while(fread(&sdate,lenDate,1,fdate)){ printf("g"); printf("poscl=%d ",sdate.posfclient); tabclient[sdate.posfclient].nb_couvert=tabclient[sdate.posfclient].nb_couvert+sdate.nbpersonne; printf("posfcl = %d , nbcouvert = %d\n",sdate.posfclient,sdate.nbpersonne); tabclient[sdate.posfclient].posfclient = sdate.posfclient; } fclose(fdate); printf("dac"); }
Je craque un peu car j'ai écris plus de 300 ligne de code dans la journée mais je cale sur les 10 dernières...
Partager