Enregistrement par bloc fichier binaire

Résolu
RoulianRoss Messages postés 21 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 8 janvier 2008 - 13 août 2007 à 17:55
RoulianRoss Messages postés 21 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 8 janvier 2008 - 14 août 2007 à 13:13
Bonjour,

j'aimerais pouvoir enregistrer par blocs mes données dans un fichier binaire et pouvoir les relire facilement.
J'enregistre par exemple un tableau de structure à propos de K et j'enregistre plus loin, toujours dans le meme fichier un tableau de structure se rapportant à L. Lorsque je veux relire mes données, je veux relire uniquement les données du blocs se rapportant à L. comment puis-je faire. J'utilise en ce moment les fonctions fwrite et fread mais je ne sais pas si cela convient.

Merci de votre aide.

4 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
13 août 2007 à 18:41
fseek(file, sizeof(K), SEEK_SET);
fread(buffer, sizeof(L), 1, file);

C++ (@++)<!--
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 août 2007 à 12:55
Salut,

Déjà, en III, tu as mis rb+ dans le fopen.
3
RoulianRoss Messages postés 21 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 8 janvier 2008
14 août 2007 à 09:44
Merci. cette fonction me semble etre ce qu'il me faut.
mais en la mettant en application j'ai quelques soucis.

 I) pour commencer j'écris dans mon fichier:
    EnregistrementConfiguration.hFichierConfiguration = fopen(EnregistrementConfiguration.cNomDuFichierDeConfiguration, "wb+");
    fwrite (&ParametresConfiguration, sizeof(ParametresConfiguration), 1, EnregistrementConfiguration.hFichierConfiguration);
    fclose(EnregistrementConfiguration.hFichierConfiguration);
II) je peux alors lire les informations:                           
    EnregistrementConfiguration.hFichierConfiguration = fopen(EnregistrementConfiguration.cNomDuFichierDeConfiguration, "rb+");
    fread (&ParametresConfiguration, sizeof(ParametresConfiguration), 1, EnregistrementConfiguration.hFichierConfiguration);
    fclose(EnregistrementConfiguration.hFichierConfiguration);
III) j'ajoute des données à mon fichier:
  

EnregistrementConfiguration.hFichierConfiguration = fopen(EnregistrementConfiguration.cNomDuFichierDeConfiguration, "rb+");
    fseek(EnregistrementConfiguration.hFichierConfiguration, sizeof(ParametresConfiguration), SEEK_SET);
   
fwrite (rTableauDeCommandesActionneur,
sizeof(rTableauDeCommandesActionneur), 1,
EnregistrementConfiguration.hFichierConfiguration);
    fclose(EnregistrementConfiguration.hFichierConfiguration);



IV) puis je les relis:                         


EnregistrementConfiguration.hFichierConfiguration = fopen(EnregistrementConfiguration.cNomDuFichierDeConfiguration, "rb+");
   
fseek(EnregistrementConfiguration.hFichierConfiguration,
sizeof(ParametresConfiguration), SEEK_SET);                        
   
fread (rTableauDeCommandesActionneur,
sizeof(rTableauDeCommandesActionneur),
EnregistrementConfiguration.hFichierConfiguration);
fclose(EnregistrementConfiguration.hFichierConfiguration);

Est ce que je fais une erreur??
ps: j'ai regardé sizeof(ParametresConfiguration) qui est de 844 à chaque fois.
0
RoulianRoss Messages postés 21 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 8 janvier 2008
14 août 2007 à 13:13
ok,merci j'avais pa vu. sinon je suis parti sur une autre méthode. j'ai fai une structure générale de mon fichier config dans laquelle je met mes autres structures de données. et je fais des memcpy( , , ); quand je veux mettre des données dans la structure et je peux quand je veux tout enregistrer ou tout lire. voila voila merci pour votre aide.

@++
0
Rejoignez-nous