Vel-Ryphon | J'ai fait un nouveau test, correspondant plus à ce que je veux faire au final : écrire un tableau de flottant.
J'ai également supprimé ma classe file_handler pour éviter tout problème extérieur :
Code :
- //Initialisation du tableau à écrire
- float* array =new float[4096];
- for(int i = 0;i < 4096;i++)
- array[i] =(float)random_number->get_value(4096) / random_number->get_value(4096);
- //Ecriture du tableau dans le fichier
- FILE* file =fopen("C:/test.txt", "w" );
- printf("OPEN : %d %d\n", feof(file), ferror(file));
- int octets_ecrits =fwrite(array, sizeof(float), 4096, file);
- printf("Octets écrits : %d\n", octets_ecrits);
- printf("WRITE : %d %d\n", feof(file), ferror(file));
- fclose(file);
- printf("CLOSE : %d %d\n", feof(file), ferror(file));
- //Initialisation du buffer pour la lecture
- float* new_array =new float[4096];
- //Lecture du fichier
- file =fopen("C:/test.txt", "r" );
- printf("OPEN : %d %d\n", feof(file), ferror(file));
- int octets_lus =fread(new_array, sizeof(float), 4096, file);
- printf("Octets lus : %d\n", octets_lus);
- printf("READ : %d %d\n", feof(file), ferror(file));
- fclose(file);
- printf("CLOSE : %d %d\n", feof(file), ferror(file));
- //Comparaison écrits / lus
- for(int i = 0;i < 4096;i++)
- if(new_array[i] != array[i])
- {
- printf("written %f\n", array[i]);
- printf("read %f\n", new_array[i]);
- }
|
Et voilà ce que j'obtiens : il écrit bien les 4096 octets, mais il ne lit que 11 octets, il attent le EOF juste après !
Code :
- OPEN : 0 0
- Octets écrits : 4096
- WRITE : 0 0
- CLOSE : 0 0
- OPEN : 0 0
- Octets lus : 11
- READ : 16 0
- CLOSE : 0 0
|
Et ensuite bien entendu aucune valeur n'est identique... ---------------
http://www.ryphon-mechanics.com
|