begin process at 2012 02 12 12:27:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Ce que je relis n'est pas ce que j'ecris


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ce que je relis n'est pas ce que j'ecris

lundi 29 mai 2006 à 08:51:22 | Ce que je relis n'est pas ce que j'ecris

laurent57150

Salut,

Lorsque j'ecris dans un fichier binaire avec fwrite et que je relis par la suite ce fichier avec fread, je me rend compte que les valeurs lus dans le fichier ne sont pas que j'ai donnée en parametre.
Voici mon code :
do
{
length = fread(mem,1,1,f_in);
if(length != 0)
    a = * mem;
    else a = * zero;

length = fread(mem,1,1,f_in);
if(length != 0)
    b = * mem;
    else b = * zero;

length = fread(mem,1,1,f_in);
if(length != 0)
    c = * mem;
    else c =  * zero;

length = fread(mem,1,1,f_in);
if(length != 0)
    d = * mem;
    else d = * zero;

//cipherblock(&a,&b,&c,&d,k);
decipherblock(&a,&b,&c,&d,k);

*mem = a;
fwrite(mem,1,1,f_out);
*mem = b;
fwrite(mem,1,1,f_out);
*mem = c;
fwrite(mem,1,1,f_out);
*mem = d;
fwrite(mem,1,1,f_out);
loop++;
}while(length != 0);

Ce que je recois en entrée de decipher n'est pas ce qui etait à la sortie de cipher!!!
en effet cipherbloc renvoit :
68E818D8    8D51B3A8    EFB3A42    60E426D6
et decipherblock recoit apres lecture du fichier :
D8    A8    42    D6

Comment corriger ce probleme?

Pour information cipherblock(decipherblock(x)) = x
Si quelqu'un a une idée.
Laurent

lundi 29 mai 2006 à 10:03:01 | Re : Ce que je relis n'est pas ce que j'ecris

turnerom

Salut,
Comment as-tu déclaré mem ?

TuRn3r
lundi 29 mai 2006 à 12:49:53 | Re : Ce que je relis n'est pas ce que j'ecris

deadbird

Regarde aussi si tu as ouvert ton fichier en mode binaire:    fopen(fichier, "rb+")
lundi 29 mai 2006 à 17:07:58 | Re : Ce que je relis n'est pas ce que j'ecris

laurent57150

ok Merci pour vous conseil!

J'ai verifié mon code et finallement j'ai trouvé l'erreur qui etait toute bete.
Ce que je veux lire est de type unsigned long int donc dans mes fwrite et fread je dois lire et ecrire 4 octets et non 1!

fwrite(mem,1,1,f_out) -> fwrite(mem,4,1,f_out);

Voila probleme corrigé ,
@+
lundi 29 mai 2006 à 22:18:02 | Re : Ce que je relis n'est pas ce que j'ecris

neodelphi

Membre Club
Essaye plutot d'utiliser sizeof au lieu de spécifier toi même la taille quand tu travaille dans la mémoire ou dans les fichiers. Ca t'évitera ce genre d'erreur facile à commettre. De plus, la taille des long peu etre différente d'un système à l'autre (même si c'est souvent la meme taille) donc mettre sizeof(long) au lieu de 4 te permettra de rendre ton code plus portable et ainsi pouvoir compiler ton programme sur une autre machine (genre un mac par exemple).

neodelphi


Cette discussion est classée dans : fichier, length, fwrite, mem, fread


Répondre à ce message

Sujets en rapport avec ce message

fread & fwrite [ par nach73 ] Salut, je voudrais utilisé fread et fwrite, mais lire des parties du fichier et ecrire cette partie dans un autre fichier.Mais je ne comprend pas tout fonction fread lit bizarrement un fichier texte [ par bilel59 ] Bonjour à tous, voici mon problème : j'écris dans le fichier vect3.txt 3 floats grâce à la fonction fwrite, cela se passe bien cependant, lorsque je v Pb avec fread et fwrite [ par Cyr62110 ] Boujour. Voila le probléme. Lorsque j'essaye d'ecrire des donnés avec fwrite(), Windows marque "Erreur, Windows ...".Voici le bout de code :char data[ fichier binaire [ par loul13 ] bonjour,j'essaie de copier un fichier .pdf avec fread et fwrite, mais fread trouve la fin de fichier avant la vrai du fichieret plus bizarre si j'util Rapatrier des données d'un fichier avec Borland C++ [ par 3nTiC ] Je suis en stage actuellement, et j'aborde sur le tas le C++ avec de bonne base en C.Dans mon projet, je dois enregistrer les données d'un tableau(qui fread et fwrite [ par tony261193 ] Bonjour, J'aimerai savoir si quand on utilise ces fonctions et qu'on ne lit qu'une partie d'un fichier, est-ce qu'il est possible de reprendre la lec Lire dans un fichier text [ par enrageur ] Je programme sous Visual C++. J'aimerais lire dans un fichier texte une serie de caracteres pour pouvoir la comparrer avec une reference. Pour cela j' Bug entre fwrite et OpenPictureDialog [ par larion ] Bonjour,Je developpe sous BorlandC++Builder6.Une parti de mon code sauvegarde des données dans un fichier sur disque avec les fonctions : fopen,fwrite fread [ par sebleboss2002 ] Salut tout le monde !J'ai fait un ptit bout de code pour lire un fichier .txt avec fread, mais, alors que le fichier ne contient que le mot "prout", l pb avec la fonction fread et la concatenation de fichiers bmp [ par Cako19 ] Bonjour,j'ai un pb avec la fonction fread avec le code suivant: tailleFichier = (donneesFichier.nFileSizeHigh)*MAXDWORD+(donneesFichier.nFileSizeLow);


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,279 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales