lecture fichier binaire de double

lecture fichier binaire de double - C - Programmation

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

Reply

Marsh Posté le 10-11-2006 à 11:19:00   

Reply

Marsh Posté le 10-11-2006 à 11:35:51    

En fait, j'ai trouvé, c'est parce qu'il faut mettre unsigned char et non char pour déclarer toto, si ça peut servir à quelqu'un!

Reply

Marsh Posté le 10-11-2006 à 22:36:26    

euh... t'as compris pourquoi ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed