Lecture dans un fichier binaire
Salut tout le monde, j'ai posé un post équivalent il y a pas longtemps mais le problème n'est plus exactement le même.
J'ai un comportement absurde d'une fonction qui lit un fichier binaire.
La fonction lit les octets un par un à l'aide de fread, les stocke dans un char ptemp[10], puis le ptemp[0] est copié dans un char* temp pour former une string. La raison de ce détournement est que quand je fais fread(chaine, 1, 8, fichier) le fread s'arrête au premier caractère assimilé comme un \0. donc ça ne lit pas 8 octets généralement.
bref.
voici le bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
char ligne[100];
char temp[100];
char lignesortie[100];
int i;
int valide = 1;
long compteur = 0;
int rep;
char ptemp[10];
//...
memset(temp, 0, 100);
for(i = 0 ; i < 8 ; i++)
{
fread( ptemp, 1, 1, fichierentree);
temp[i] = ptemp[0];
//printf("\ntemp[%d]->%c<- dec.->%d<- hex. ->%x<-\net ptemp = %d hex. %x",i,temp[i],temp[i], temp[i], ptemp[0],
ptemp[0]);
printf("\nptemp[0] : ->%c<- ->%d<- ->%x<-", ptemp[0], ptemp[0], ptemp[0]);
//... |
et voici le résultat :
Code:
1 2 3 4 5 6 7 8
| ptemp[0] : -> <- ->32<- ->20<-
ptemp[0] : -><- ->-126<- ->ffffff82<-
ptemp[0] : -><- ->0<- ->0<-
ptemp[0] : -><- ->16<- ->10<-
ptemp[0] : -><- ->0<- ->0<-
ptemp[0] : -><- ->1<- ->1<-
ptemp[0] : ->6<- ->54<- ->36<-
ptemp[0] : ->o<- ->111<- ->6f<- |
voici l'extrait du fichier à lire (hexa)
Code:
20 82 00 10 00 01 36 6F
quelqu'un peut m'expliquer pourquoi la ligne en rouge? merci