Lecture fichier binaire

cs_helena123 Messages postés 22 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 25 août 2003 - 25 août 2003 à 21:17
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 25 août 2003 à 23:26
Salut les loulous,

j utilise cette "structure" de champs de bits que l on peut trouver dans la librairie et qui est tres facile a utiliser mais pour laquelle je n arrive pas a lire et copier dans un fichier binaire :

Code:

typedef bitset<16> BitSet; // champs de 16 bits
typedef bitset<32> BitSet2; // champs de 32 bits



on peut les initialiser avec un string

Code:

int main() {

string str16 = ("1001101111100001");

BitSet BIT16(str16);

string str_16 = ("1110000000000001");

BitSet BIT_16(str_16);


maintenant je vais les ecrire dans un fichier :

Code:

FILE * f1 ;

if ((f1=fopen("c://bin.dat","ab")) == NULL)
cout << "erreur d ouverture" << endl;
fwrite(&BIT16,2,1,f1);
fwrite(&BIT_16,2,1,f1);
fclose(f1);


maintenant je vais declarer un champs de 32 bits et je voudrais y recopier les 2 champs de 16 bits que je viens de lire :
Code:

BitSet2 Bit32 ;

FILE *f ;

if ((f=fopen("c://bin.dat","rb")) == NULL)
cout << "erreur de lecture " << endl;

fread(&Bit32,2,2,f);
fclose(f);


et enfin je demande a l ecran de lire les 3 champs pour bien comparer et etre sur que j ai bien copie et lu :

Code:

cout << BIT16 << endl ;
cout << BIT_16 << endl ;
cout << Bit32 << endl ;


j espere avoir ete clair mais j en peux plus ca fait deux jours que je suis dessus et cela me ralentit a mort, merci aux bonnes ames qui essayeront de m aider.

BisouXXX

ps: j ai deja pense a mettre un pointeur mais je maitrise pas les pointeurs sur structures de ce style. Je ne crois pas que ce soit difficile mais j ai un probleme avec les deferences et les pointeurs

3 réponses

guiguikun Messages postés 92 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 1 octobre 2003 1
25 août 2003 à 21:29
je n'ai pas tout lu, même pas toute la question, mais qqchose me semble zarb dans ton code :
c://bin.dat

a ta place je mettrais :
c:\\bin.dat
0
cs_helena123 Messages postés 22 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 25 août 2003
25 août 2003 à 21:38
je te remercie mais cela ne change rien mais je l ai quand meme corrigee.
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
25 août 2003 à 23:26
As-tu essayé d'utiliser la méthode to_ulong() du bitset pour récupérer un nombre et l'écrire ensuite dans ton fichier ?

string str16 = ("1001101111100001"); 
BitSet BIT16(str16); 

FILE * f1 ; 
if ((f1=fopen("c://bin.dat","ab")) == NULL) 
cout << "erreur d ouverture" << endl; 
else
{
fwrite(BIT16.to_ulong(),sizeof(unsigned long),1,f1); 
fclose(f1); 
}



Kaid - kaid.fr.st
0
Rejoignez-nous