Lecture fichier binaire

Messages postés
22
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
25 août 2003
- - Dernière réponse : 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
Afficher la suite 

3 réponses

Messages postés
92
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 octobre 2003
0
Merci
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
Commenter la réponse de guiguikun
Messages postés
22
Date d'inscription
mardi 4 mars 2003
Statut
Membre
Dernière intervention
25 août 2003
0
Merci
je te remercie mais cela ne change rien mais je l ai quand meme corrigee.
Commenter la réponse de cs_helena123
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
0
Merci
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
Commenter la réponse de cs_Kaid