La valeur 26=0x1A pose un problème de lecture de fichier

Signaler
Messages postés
2
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
4 février 2003
-
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
Salut!

Jsuis en stage et jsuis pas un AS du dévelopement et ca URGE!
J'ai rencontré un BIG problème : le coup du de la valeur 26=0x1A avec les fonctions fwrite et fread.

Voila une illustration du problème:

Je veux par exemple lire les valeurs 48,49,50,51,26,52,53,54,55,56,57,58,59 et 60
(vous aurez remarquer le 26!)

#include<stdio.h>
#include<conio.h>

void main()
{
short valeur;
short tab[14]={48,49,50,51,26,52,53,54,55,56,57,58,59,60} ;
// 26 ou 3610 ca cause le meme problème//26 0000 0000 0001 1010 0x1A (on est en short!)//3610 0000 1110 0001 1010 0xE1A
FILE *ptr;
ptr = fopen("fichier.txt","w");
for(int i = 0 ; i<14 ; i++)
{
valeur=tab[i];
fwrite(&valeur,sizeof(short),1,ptr);
}
fclose(ptr);
ptr = fopen("fichier.txt","r");
for( i = 0 ; i<14 ; i++)
{
fread(&valeur,sizeof(short),1,ptr);
printf("%i ",valeur);
}
getch();
}

Et au final je lis :
48 49 50 51 51 51 51 51 51 51 51 51 51 51
Bref au lieu de lire 26 ca fait comme si ca marque la fin du fichier.
il en est de même pour 3610 (et d'autres valeurs contenant la valeur 26).
Ca a l'air con comme ca mais je comprends pas !!!
HELP!!!

1 réponse

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Peut être un problème de mode, essaye un mode binaire (fopen(..., "rb")).