lecture fichier binaire de double - C - Programmation
MarshPosté le 10-11-2006 à 11:19:00
Bonjour,
Voilà, je voudrais lire un fichier binaire (une image codée 64 bits, PC_REAL). J'ai suivi les conseils donnés dans une autre discussion, j'ai fait une lecture comme suit:
int im_size = 128*128; int n; double *buff; buff = malloc(im_size*sizeof(double)); if((n=fread(buff,sizeof(double),img_size,fdFic)) != img_size) { /* traitement de l'erreur */ } /* après avoir ouvert fdFic en mode 'rb' */
Mais lorsque j'affiche la première valeur du buffer par exemple, en hexa pour comparer avec les données de mon fichier lu avec un éditeur hexa, je m'aperçoit que ça lit un peu n'importe comment! Les lignes de code sont les suivantes:
Marsh Posté le 10-11-2006 à 11:19:00
Bonjour,
Voilà, je voudrais lire un fichier binaire (une image codée 64 bits, PC_REAL).
J'ai suivi les conseils donnés dans une autre discussion, j'ai fait une lecture comme suit:
int im_size = 128*128;
int n;
double *buff;
buff = malloc(im_size*sizeof(double));
if((n=fread(buff,sizeof(double),img_size,fdFic)) != img_size) {
/* traitement de l'erreur */
}
/* après avoir ouvert fdFic en mode 'rb' */
Mais lorsque j'affiche la première valeur du buffer par exemple, en hexa pour comparer avec les données de mon fichier lu avec un éditeur hexa, je m'aperçoit que ça lit un peu n'importe comment!
Les lignes de code sont les suivantes:
char *toto;
toto = (char *)&buff[0];
printf("toto: %x %x %x %x %x %x %x %x\n", toto[0], toto[1], toto[2], toto[3], toto[4], toto[5], toto[6], toto[7]);
printf("buff: %e\n", buff[0]);
A l'affichage, ça donne:
toto: ffffffdf fffffff9 4b ffffffb4 21 ffffffde 15 3e
buff: -2.119751e+154
Au lieu de donner: toto: df f9 4b b4 21 de 15 3e!!!
Je ne vois pas du tout comment résoudre ce problème, ça fait un moment que je cherche et ne trouve point d'erreur.
Quelqu'un aurait-il une idée?
Merci d'avance!
Sandra