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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();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,...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
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);
Partager