Lecture ecriture dans un fichier binaire

[Résolu]
Signaler
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008
-
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008
-
j'ai 2 tableaux : un de unsigned int et un de char "string"
unsigned int tabint[]={ xxx,xxx,xxx...};
char *tabnom[]={ "nom1","nom2","nom3"...};

je voudrais sauvegarder ces tableaux dans un fichier binaire (.dat ou autre)
d'après plusieurs sources d'ici, j'ai essayé avec ofstream fileout("file.dat"), fileout.write(reinterpret_cast<const char*>(&tabint[0]), sizeof(int))...

j'ai fait un premier essai avec le tableau de int
mais quand je lis le fichier, à la 6ème valeur, plus rien : je me retrouve avec -128,-1,-1,-1... 

comme je ne veux pas sauvegarder sous forme de texte, comment cela fonctionne-t-il donc ?

4 réponses

Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

PS: je precise que j'ai fait le meme essai avec le tableau de char et là ça passe sans problème ! etrange...
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
unsigned int
tabint[]={ xxx,xxx,xxx...};
eout.write(reinterpret_cast<const char*>(&tabint[0]), sizeof(int))...

Si tu veux ecrit en mode texte eout << tabint[0]; par exemple

++
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

oui, mais je ne veux pas ecrire en mode texte

voilà un exemple de ce qu'il se passe avec ce tableau :
unsigned int tabint[]={1200000, 1000000, 800000, 600000, 400000, 200000,100000,90000};
unsigned int tablecture[]={0,0,0,0,0,0,0,0};

je fais une boucle
for(i=0;i<10;i++){ file.write(...(&tabint[i],sizeof(int)); }

après lecture, j'ai :
1200000, 1000000, 800000, 600000, 128, 0, 0, 0, 0, 0
Messages postés
92
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
29 mai 2008

bon bin finalement je vais pas utiliser ofstream
je vais passer par le standard FILE, fopen("file.dat","w+b")/fopen("","r+b") et fwrite/fread
ça marche impec et en plus le fichier est moins gros

ps: n'empêche, j'aimerai quand meme bien savoir d'où ça vient le probleme avec les int