read/write d'un tableau de double
Bonjour àtous,
j'essaie de comprendre le fonctionnement des méthodes read() et write() pour écrire/lire des fichiers binaires.
J'ai testé un petit bout de code mais j'ai un soucis.
Tout d'abord voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
//ecriture
const int nbpointsi = 15000;
ooFile.write((char*)&nbpointsi,sizeof(int));
double tab_init[3*nbpointsi];
for(int i=0; i<3*nbpointsi;i++)
{
tab_init[i]=(rand()/(double)RAND_MAX ) * 10.;//un nb aleatoire entre 0 et 10
}
ooFile.write((char*)&tab_init, 3*nbpointsi*sizeof(double));
ooFile.close(); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
//lecture
ifstream result;
result.open("dbg_save0.txt",std::ios_base::in);
if(!result.is_open())
{
cout<<"impossible de lire le fichier."<<endl;
return 1;
}
int nbpointsr;
result.read((char*)&nbpointsr,sizeof(int));
double *tab_res=new double[3*nbpointsr];
result.read((char*)tab_res, 3*nbpointsr*sizeof(double));
for(int i=0;i<3*nbpointsr;i++)
{
double x=tab_init[i];
double y=tab_res[i];
cout<<"tab_init["<<i<<"]-tab_res["<<i<<"] = "<<x-y<<endl;
}
result.close(); |
Jusqu'au 30ème élément la différence entre les 2 tableaux est nulle (ok) par contre, ensuite mon tab_res contient des valeurs érronées (9.25..e+061,...).
Pourtant je ne vois pas d'ou celà peut venir, je spécifie pourtant la meme taille en read et en write.
Merci par avance de m'éclairer.
[EDIT] Autant pour moi, je n'avais pas précisé que je lisais un fichier binaire :
result.open("dbg_save0.txt",std::ios_base::binary);