Fwrite en mémoire....

loicus Messages postés 46 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 3 mai 2008 - 15 mars 2008 à 16:36
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 - 15 mars 2008 à 17:36
Bonjour à tous...

J'ai un très gros probleme.  Je travail avec des fichiers binaires en lecture et en écriture.

Je n'ai aucun probleme avec l'utilisation classique de fwrite et de fread.
Mais j'aimerais bien pouvoir garder en mémoire certaine variable avant de les écrires..., le plus simple pour vous s'expliquer ce que j'aiemrais bien faire, est de vous montrez un example

A) //ce code marche... mais ne me satisfait pas completement
struct

Hit {
float x;
float y;
float z;
};
Hit hit;
hit.x = 1;
hit.y = 1;
hit.z = 1;

fwrite(&hit,sizeof(Hit),1,pFile);

//plus loin dans le programme

hit2;
fread(&hit2,sizeof(Hit),1,pFile
);

B) //j'aimerais pouvoir utiliser un code de ce genrestruct

Hit {
float x;
float y;
float z;
};
Hit hit;
hit.x = 1;
hit.y = 1;
hit.z = 1;

void* buffer = &hit;
int        size = sizeof(Hit);

//plus loin dans le programme

fwrite(buffer,size,1,pFile);

//encore plus loin dans le programme

hit2;
fread(&hit2,sizeof(Hit),1,pFile
);

Est ce que vous pouvez m'indiquer la bonne manière de faire?

Merci d'avance
Loic

2 réponses

loicus Messages postés 46 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 3 mai 2008
15 mars 2008 à 17:27
j'ai résolu mon probleme

l'example B) marche.  j'avais fait uen faute dans mon programme du style
fwrite(&buffer,size,1,pFile);

au lieu de
fwrite(buffer,size,1,pFile);

désoler du dérangement,
Loic
0
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
15 mars 2008 à 17:36
Tout ça marche très bien :

#include <stdio.h>



struct HIT
{
   float x;
   float y;
   float z;
};



void main()
{
   HIT   hit    = { 1.5 , 2.7 , -3.9 };
   void* buffer = &hit;
   int   size   = sizeof(HIT);



   // plus loin dans le programme



   FILE* pFile = fopen("C:/Temp/test.dat","wb");
   if (pFile)
   {
      printf("Ecrire hit  : x=%f y=%f z=%f\n",hit.x,hit.y,hit.z);
      fwrite(buffer,size,1,pFile);
      fclose(pFile);
   }



   // encore plus loin dans le programme



   HIT hit2;
   pFile = fopen("C:/Temp/test.dat","rb");
   if (pFile)
   {
      fread(&hit2,size,1,pFile);
      fclose(pFile);
      printf("Lire   hit2 : x=%f y=%f z=%f\n",hit2.x,hit2.y,hit2.z);
   }
}


ce qui donne :

Ecrire hit  : x=1.500000 y=2.700000 z=-3.900000
Lire   hit2 : x=1.500000 y=2.700000 z=-3.900000

Jean-François
0
Rejoignez-nous