Problème de lecture d'entête BMP avec "fscanf".
Salut!:D
En tentant de lire l'entête d'un fichier BMP ainsi:
Code:
1 2 3 4 5
| FILE* bmpFile=fopen("c:/b.bmp","r");
char c1=0,c2=0;
int n=0;
fscanf(bmpFile,"%c%c%d",&c1,&c2,&n);
printf("%c%c\n%d\n",c1,c2,n); |
l'affichage donne:
:aie:
Or l'éditeur héxadécimal donne:
42 4D 36 28 00 00
Sinon,Ce qui donne bien : 'B' 'M' 10294 en lisant "00 00 28 36" car c'est en little endian.
Cette valeur est exactement celle fourni par Windows.
Même lu en big endian:
36 28 00 00 vaut 908 591 104 ce qui entre bien dans un "int".
Comment peut il sortir un 6?
Plus drôle encore:
Code:
1 2 3
| char buffer[10]={0};
fgets(buffer,6,bmpFile);
printf("%c%c\n%d\n",buffer[0],buffer[1],buffer[2]); |
affiche 54.:aie:
Est-ce que la lecture ne peut se faire qu'avec "fread"?
Si oui pourquoi?
Sinon, comment bien utiliser "fscanf" pour ce type d'opération?
Merci de votre aide.:D