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

sengr Messages postés 2 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 4 février 2003 - 4 févr. 2003 à 22:45
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 - 4 févr. 2003 à 23:39
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

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
4 févr. 2003 à 23:39
Peut être un problème de mode, essaye un mode binaire (fopen(..., "rb")).
0
Rejoignez-nous