Non capisco dove sia l'errore per effettuare la scrittura e la lettura dallo stesso file binario di float.
In pratica il risultato che mi viene mostrato a video è
5.25282e-33
7.00649e-45
0
3.50325e-44
0
Spero che possiate aiutarmi, vi posto il codice almeno diventa più semplice capire dove possa essere l'errore,
Graziecodice:#include<stdio.h> #include<fstream> #include<string.h> #include<sstream> #include<iostream> using namespace std; int main(){ ofstream direct_bin; string fold="./FILES/"; string echo=fold+"file_float.dat"; direct_bin.open(echo.c_str(),ios::out | ios::binary); int size1=5; float * buffer; buffer = new (nothrow) float [size1]; if(!buffer){cout<<"errore buffer"<<endl; return 1; } buffer[0]=4.5; buffer[1]=10e5; buffer[2]=3.22; buffer[3]=10e2; buffer[4]=0.783; direct_bin.write(reinterpret_cast<char*>(buffer),size1); delete[] buffer; direct_bin.close(); int n_elements=0; float * sign; char * memblock; string direct_signal="file_float.dat"; char* fileN = new char[direct_signal.length()+1]; strcpy(fileN,direct_signal.c_str()); // apre il file e posiziona il cursore alla fine ifstream file (fileN,ios::in|ios::binary|ios::ate); ifstream::pos_type size; if (file.is_open()) { size = file.tellg(); memblock = new char [size]; n_elements = int(size); cout<<"elementi = "<<n_elements<<endl; sign=new float[n_elements]; file.seekg (0, ios::beg); file.read (memblock, 5); memcpy (sign,memblock,sizeof(float)*n_elements); delete [] memblock; file.close(); } else {cerr<<"File "<<direct_signal<<" not found"<<endl; return -1; } for(int i=0;i<n_elements;i++) cout<<sign[i]<<endl; return 0; }

Rispondi quotando