Probleme de lecture

unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008 - 23 févr. 2006 à 12:58
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008 - 23 févr. 2006 à 19:00
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

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 févr. 2006 à 14:14
Je ne vois aucun fopen() c'est normal ?

Shell
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
23 févr. 2006 à 15:17
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
0
unrealgun Messages postés 87 Date d'inscription mardi 16 décembre 2003 Statut Membre Dernière intervention 4 mars 2008
23 févr. 2006 à 19:00
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
0
Rejoignez-nous