corrsinlove
Messages postés3Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention 8 juin 2008
-
8 juin 2008 à 03:44
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 2009
-
8 juin 2008 à 14:02
Bonjour j'ai une question concernant la récupération de donnée structuré dans un fichier, je n'ai pas eu de souçi pour le fwrite mais pour le fread la fenêtre s'ouvre puis se ferme immédiatement malgré le systeme("pause"), je ne peut donc pas savoir à l'aide du printf si les données ont bien été récupérées. Est ce que j'ai omis quelque chose?
voici le code:
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *sp=fopen("spectacle.dat","r+b"); /*fichier contenant le nombre d'events*/
FILE *pe=fopen("event.dat","r+b"); /*fichier ou l'on saisie les events*/
fseek(sp,0,SEEK_SET);
fseek(sp,0,SEEK_SET);
int i, tot_event;
struct evenement
{
char show [30]; /*structure event*/
int mois;
int jour;
};
if (pe != NULL)
{
/*les données ont été saisie avec un fwrite*/
for(i=1;i<tot_event;i++)
{
fread(&actu[i],sizeof(struct evenement), 1, pe);
printf("%s %d %d",actu[i].show, actu[i].mois, actu[i].jour);
}
}
fclose(pe);
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 8 juin 2008 à 10:50
Bonjour,
Plusieurs remarques :
1) Inutile de faire un "fseek(sp,0,SEEK_SET); " après un fopen, le curseur est deja en début de flux lors du fopen. En plus tu le fais deux fois pour le meme flux
....
2) Tu déclares un tableau evenement avecune taille tot_event, alors que tot_event n'est pas initialisé....
Pour lire de tel fichier il est inutile de se trimballer un fichier event.dat.
Pour connaitre le nombre de structure contenu dans le fichier, tu récupères la taille du fichier et tu la divise par sizeof(evenement).
De cette manière tu t'évites une lecture supplémentaire. et tu peux initialiser ton tableau après la récuprétation de la taille.
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 8 juin 2008 à 11:52
Bonjour,
Et quand on ouvre un fichier, on teste l'ouverture tout de suite ! Pas une douzaine d'instructions après pendant lesquelles on a utilisé le fichier !!! (même si ici c'est un fseek() inutile).
corrsinlove
Messages postés3Date d'inscriptionsamedi 3 décembre 2005StatutMembreDernière intervention 8 juin 2008 8 juin 2008 à 13:12
j'ai modifié le code, ca s'execute (ca n'indique pas encore les bonnes valeurs mais je ne suis pas loin..)
par contre je ne vois pas comment récuperer la taille du fichier, en cherchant sur google, il précise qu'il faut créer une structure et utiliser une bibliotheque, y'a pas un moyen plus simple comme ftell ?