Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ce que je relis n'est pas ce que j'ecris [ Windows / Fichier & Disque ] (laurent57150)

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é 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[ Optimisation fread() découpe de fichier [ par tbpacker ] Bonjour à tous,Je me demandais pour l'utilisation de fread dans quels cas d'argument a t'on les meilleures performances?1-Lire un packet de n octets 1 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 Envoie de fichier. [ par kiitos ] Voici mes 2 morceaux de code qui ont un problème, recv() reçois mais fwrite() ne marque rien du tout. J'ai essayé  avec printf() et fprintf() mais dan [MFC]Afficher correctement le contenu d'un fichier [ par BIG_BOSS_001 ] Bonjour à tous, J'ai un problème minime mais génant. Voici mon code : void CMFCDlg::OnBnClickedOpen() {     // TODO : ajoutez ici le code de votre g problem avec scanf et fwrite dans boucle while [ par kamal93270 ] bonjour voici mon programme : #include #include int main() { int choix; FILE* fichier; while (1) { scanf("%d", 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'


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.