Probleme de lecture

Signaler
Messages postés
87
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
87
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
4 mars 2008
-
bonjour
depuis quelques jours j essaye de lire un code que j ai incrit dans un fichier
voici mon code


//codage

{
char bufsz[50]; int szps = 0;
int widthsz = monwidth;
while(widthsz > 255)
{
bufsz[szps] = 255;
widthsz -= 255;
szps++;
}
if(widthsz > 0)
{
bufsz[szps] = widthsz;
szps++;
}
bufsz[szps] = 0;
szps++;
fwrite(bufsz , sizeof(char) , szps, fichier);
}


//decodage

char tmp[1];
while(!feof(fichier))
{
fread(tmp, sz, 1, fichier);
if(tmp[0] == 0)
break;
else
width += (int)tmp[0];
}

le probleme est que tmp[0] renvoie une valeur negative au lieu du code caractere que j ai inscrit

merci d avance pour votre aide

3 réponses

Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Je ne vois aucun fopen() c'est normal ?

Shell
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
char tmp[1]; ??? tu crée une chaine de caractère. Donc tu a ton
caractère plus le /0 de la fin de chaine. Si tu veut que une variable
ne contienne que un caractère tu doit déclarer comme ceci :



char tmp;



fread(tmp, sz, 1, fichier); Le 1er paramètre de fread doit être
une adresse, donc fread(&tmp,sz,1,fichier) . Je ne sais pas ce que
contient sz, mais tu aurai plus facile en faisant sizeof(temp). Donc

fread(&tmp,sizeof(tmp),1, fichier);





Bon code



++ALL
Messages postés
87
Date d'inscription
mardi 16 décembre 2003
Statut
Membre
Dernière intervention
4 mars 2008

oui, j'ai fat comme tu as dis mais ca marche toujours pas.

PS : deathcrash, "fichier" est un fichier ouvert au préalable :p
PS2: jai mis une chaine de caracteres mais je ne lutilisais pas telle quelle jutilisais pas tmp mais tmp[0]. cependant tu as raison, il vvaut mieu utiliser un char