begin process at 2012 05 30 15:02:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

récupération de donnée structurée dans un fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

récupération de donnée structurée dans un fichiers

dimanche 8 juin 2008 à 03:44:01 | récupération de donnée structurée dans un fichiers

corrsinlove

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;
    };
   
    evenement actu[tot_event];

    if (sp != NULL)
    {  fread(&tot_event,sizeof(int), 1, sp);
    printf("%d",tot_event);
         fclose(sp);
    }       
     
    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);

system("PAUSE");

   return 0;
}

si quelqu'un a une idée... merci d'avance :-)
dimanche 8 juin 2008 à 10:50:44 | Re : récupération de donnée structurée dans un fichiers

DeAtHCrAsH

Réponse acceptée !
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.

Shell
dimanche 8 juin 2008 à 11:52:22 | Re : récupération de donnée structurée dans un fichiers

jfrancois

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).

Jean-François

dimanche 8 juin 2008 à 13:12:43 | Re : récupération de donnée structurée dans un fichiers

corrsinlove

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 ?

#include <conio.h>
#include <stdlib.h>
#include <stdio.h>


int main(int argc, char *argv[])
{
    FILE* sp = NULL;
    FILE* pe = NULL;
    
    sp=fopen("spectacle.dat","r+b");
    pe=fopen("event.dat","r+b");     /*fichier ou l'on saisie les events*/

    int i, tot_event;   /*i et tot_event sont initialisées*/


    struct evenement
    {
    char show [30];                /*structure event*/
    int mois;
    int jour;
    int place_reserve[50][60];    /*un tableau de place*/
    };


    
    
if (errno==0)   
  {  
    if (sp != NULL)
    {  
             
             fread(&tot_event,sizeof(int), 1, sp);
             printf("%d",tot_event);
             fclose(sp);
    }       
     
    
    evenement actu[tot_event];
    
    if (pe != NULL)
    {   

        fread(&actu[1],sizeof(struct evenement), 1, pe);
        printf("%s %d %d",actu[1].show, actu[1].mois, actu[1].jour);
        
    }
    fclose(pe);

}else perror("erreur ouverture");    

system("PAUSE");

   return 0;
}

dimanche 8 juin 2008 à 14:02:16 | Re : récupération de donnée structurée dans un fichiers

jfrancois

Je me demande ce que cela peut bien exécuter car tout est faux !

En ce qui concerne la taille d'un fichier : CreateFile() + GetFileSize() + CloseHandle() dans windows.h

Jean-François



Cette discussion est classée dans : int, pe, event, actu, sp


Répondre à ce message

Sujets en rapport avec ce message

keybd_event ? [ par ncoder ] Bonjour à toi lecteur,Peux-tu m'expliquer ce problème là s'il te plait ?Regarde, j'ai fait ce petit programme :int main(){char rep[50];printf("Texte : problèmes de fonctions [ par Owlly ] Bonjour, j'ai un petit problème qui m'ennui beaucoup:Je suis étudiant et je débute (vraiment) en C, voici un "programme" (enfin si on peut appeler ça blocage interface utilisateur [ par totoscill ] Bonjour,Je développe une application me permettant de piloter un outil avec labwindows CVI 8.5. J'utilise une interface utilisateur et une boucle whil petit probleme SDL [ par DarthKhaos ] Bonjour, voila j'ai un petit souci, j'ai un projet ou je dois faire bouger un bras robotisé aprés plusieur test sa marche a merveille, en selectionnan Probleme morpion en SDL c++ [ par juju116 ] Salut tout le monde! j'expose donc mon souci pour l'instant mon programme affiche une image en fond d'ecran et bizarement cette image est bien chargé Keybd_event dans DirectX [ par Hawatak ] Bonjour, Alors voilà, j'ai créé un petit programme qui simule l'appuie de certaines touches sur le clavier : #include #include #include #include Problème de réception de trames sous LabWindows [ par Crhys ] Bonjour, bonjour,je me présente, je m'apelles Christophe je suis tout nouveau sur ce forum et tout nouveau dans le Labwindows CVI ^^'.En effet, je sui HELP! Problème Booléen! [ par phenix22000 ] Bonjour,je suis débutant et je ne sais pas trop utiliser les caractères booléens.je voudrais mettre à l'état vrai un tableau V[m][n]. J'ai testé en me LVN_GETINFOTIP notification [ par juju116 ] bonjour tout le monde! mon code plante au niveau de la notification. j'arive à compiler, mais a chaque fois que j'execute tout beug quelqu'un pouré me ajout d'un element à la fin d'une liste chainée [ par beatkof ] bonsoir je voudrai faire une fonction qui ajout un element à la fion d'une liste chainée et je n'y arrive pas voila ma fonction: #include #include s


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales