Ecriture/lecture de float dans un fichier [C] - C - Programmation
Marsh Posté le 31-05-2009 à 01:36:24
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 :
|
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 :
|
Et ensuite bien entendu aucune valeur n'est identique...
Marsh Posté le 31-05-2009 à 02:21:36
C'est bon j'ai trouvé d'où venait le problème : le mode d'ouverture du fichier. Il fallait mettre "rb" et "wb". Forcément, le b indique qu'il s'agit de données binaires....lol.
Marsh Posté le 31-05-2009 à 10:12:40
Tu ferais aussi bien d'utiliser le format texte, c'est plus lisible et portable en représentation.
Marsh Posté le 05-06-2009 à 23:27:32
Vel-Ryphon a écrit : Salut, |
Je recommande le mode texte :
http://www.bien-programmer.fr/notes.htm#enreg_struct
Marsh Posté le 31-05-2009 à 01:01:28
Salut,
Je rencontre pas mal de soucis pour gérer l'écriture/lecture de virgules flottantes dans un fichier.
Voilà un p'tit exemple de code de test qui pose problème (utilisant ma propre classe file_handler pour gérer le fichier :
La fonction initialize() fait le fopen.
La fonction finalize() fait le fclose.
La fonction read_data(variable) fait :
La fonction write_data(variable) fait :
Et en sortie, après lecture, j'obtiens ça :
Comme vous le voyez, les données ne sont pas identiques.
Pourtant la fonction fwrite/fread font des lectures/écritures bit par bit sur un nombre d'octets définit, dans mon cas il s'agit de 4 octets (sizeof retournant 4 pour le type float).
J'ai beau faire 36 000 essaie différent, avec ou sans buffer intermédiare de type char*, même problème...
Est-ce que vous voyez où je me plante ?
Je vous remercie d'avance !