Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4765 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fwrite panique ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fwrite panique ??

n°347310
juldjin
Posté le 29-03-2003 à 18:26:54  profilanswer
 

je travaille sous C++ builder 6, et quand je fais une boucle pour récupérer dans un fichier des données (avec scanf) et que je veux les enregistrer dans un autre avec fwrite, ben les 13 premier marche mais apres il me met toujours le meme nombre (-431602080.000000 pour des float) et (-858993460 pour des entiers), pourtant pensant devenir fou, j'écris dans un troisieme fichiers les memes variables avec fprintf et la j'obtient bien les memes données...
 
C'est bizarre.. c'est deja arrivé a quelqu'un, parce que la je m'arrache les cheveux...
 
 
 
un exemple d'une boucle de récupération :
 

Code :
  1. for(int i = 0;i < Nb_Vertex;i++)
  2.         {
  3.  if(!positionne(F,"*MESH_VERTEX " )) err("chargement MESH_VERTEX" );
  4.  fscanf(F,"%d %f %f %f ",&temp,&VertexX,&VertexY,&VertexZ);
  5.                 fwrite(&VertexX,4,1,G); fprintf(D,"%f ",flt);
  6.                 fwrite(&VertexY,4,1,G); fprintf(D,"%f ",flt);
  7.                 fwrite(&VertexZ,4,1,G); fprintf(D,"%f ",flt);
  8.                                         fprintf(D,"\n" );
  9.         }

mood
Publicité
Posté le 29-03-2003 à 18:26:54  profilanswer
 

n°347314
Taz
bisounours-codeur
Posté le 29-03-2003 à 18:51:20  profilanswer
 

1) est que ton fscanf réussit
2) tes utilisations de fwrite sont criticable. utilise sizeof monVertex plutot que 4, c'est plus lsible et c'est une bonne habitude.
 
sinon je ne vois aps de problème. dans D, tu as la représeantion textuelle des tes données, dans G, la représenation binaire

n°347360
Ace17
Posté le 29-03-2003 à 21:26:18  profilanswer
 

Comment tu l'ouvres ton fichier?
Je veux dire, quels sont les paramètres que tu donnes à fopen.
Moi je m'étais fait avoir avec fopen("monfichier.dat", "r" ) alors qu'en fait il fallait faire fopen("monfichier.dat", "rb" ). (b pour binary). En mode texte ( =pas binaire ) il y a une conversion au niveau des retours à la ligne à l'écriture et à la lecture.

n°347374
juldjin
Posté le 29-03-2003 à 22:01:31  profilanswer
 

Je me suis trompé de code voila le bon :
 

Code :
  1. for(int i = 0;i < Nb_Vertex;i++)
  2.         {
  3.  if(!positionne(F,"*MESH_VERTEX " )) err("chargement MESH_VERTEX" );
  4.  fscanf(F,"%d %f %f %f ",&temp,&VertexX,&VertexY,&VertexZ);
  5.                 fwrite(&VertexX,4,1,G); fprintf(D,"%f ",VertexX);
  6.                 fwrite(&VertexY,4,1,G); fprintf(D,"%f ",VertexY);
  7.                 fwrite(&VertexZ,4,1,G); fprintf(D,"%f ",VertexZ);
  8.                                         fprintf(D,"\n" );
  9.         }


 
En faite VertexX Y ou Z sont des flottants, c'est pour ça que j'ai mis 4 octets.. mais bon c'est vrai qu'un sizeof serait la bien venu...
 

Citation :

1) est que ton fscanf réussit  


 
Oui oui j'en suis sur car mon fprintf m'écris les bonnes valeurs récupérée par mon scanf.
 
 

Citation :

sinon je ne vois aps de problème. dans D, tu as la représeantion textuelle des tes données, dans G, la représenation binaire


 
Ben ouais moi non plus je vois pas, enfin si c'était sur toutes les itérations, mais ce qui est bizarre c'est que je recupere quelques bonnes valeurs, puis c'est la panique....
 
 
 

Citation :

Comment tu l'ouvres ton fichier?


 
F est en "r" pareil que "rt"
D est en "w" comme "wt"
G est en "wb"
 
 
c'est bizarre... je comprends pas...

n°347391
Taz
bisounours-codeur
Posté le 29-03-2003 à 22:39:52  profilanswer
 

le mode "t" n'est pas standard ni rien du tout. par defaut, le mode st texte. tu peux decrire plus precisément ce qui cloche et tester systématiquement tous les codes de retours pour en savoir un peu plus

n°347765
juldjin
Posté le 30-03-2003 à 21:56:05  profilanswer
 

euh j'ai cherché, j'ai toujours pas trouvé mon erreur, mais est ce que cela serait possible qu'il faille modifier la taille du buffer de mon FILE* ou j'écris/lis, vu qu'il est affecté automatiquement avec fopen, il faut peut etre l'augmenter ou le diminuer ?
 

n°347796
Taz
bisounours-codeur
Posté le 30-03-2003 à 22:45:21  profilanswer
 

non ca vient pas de là. je comprends pas ton problème. expliques concretement ce que tu obtiens et ce que tu voudrais obtenir

n°347803
juldjin
Posté le 30-03-2003 à 22:55:42  profilanswer
 

c'est bon j'ai resolu, ça vient pas de l'écriture, mais ca vient de ma lecture, j'ouvrais pour lire mon fichier en "r", j'ai changer en "rb" et ça marche nickel, par contre pourquoi ça marchait a moitié en "r", je sais po...
 
merci à toi ++Taz
 
(ptain des fois on cherche une erreur pendant trop de temps alors que c'est une erreur a la con... mais bon ça forge l'expérience)

n°347834
schnapsman​n
Zaford Beeblefect
Posté le 30-03-2003 à 23:31:09  profilanswer
 

juldjin a écrit :

c'est bon j'ai resolu, ça vient pas de l'écriture, mais ca vient de ma lecture, j'ouvrais pour lire mon fichier en "r", j'ai changer en "rb" et ça marche nickel, par contre pourquoi ça marchait a moitié en "r", je sais po...
 


 
parce que le systeme windaube gère deux sortes de fichiers : les "text" et les "binary". Cela se répercute sur la lib d'E/S de fichiers avec un mode spécial "b", propre à windaube.


Message édité par schnapsmann le 30-03-2003 à 23:31:39

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°347865
theShockWa​ve
I work at a firm named Koslow
Posté le 31-03-2003 à 00:49:11  profilanswer
 

C'est clair que ce mode b, c'est vraiment la merde ... il devrait être par défaut déjà, ce serait pas un mal ....
 


---------------
last.fm
mood
Publicité
Posté le 31-03-2003 à 00:49:11  profilanswer
 

n°353144
Ace17
Posté le 04-04-2003 à 17:01:47  profilanswer
 

juldjin a écrit :

c'est bon j'ai resolu, ça vient pas de l'écriture, mais ca vient de ma lecture, j'ouvrais pour lire mon fichier en "r", j'ai changer en "rb" et ça marche nickel, par contre pourquoi ça marchait a moitié en "r", je sais po...


 
C'est que je t'ai dit dès le début... et y'a l'explication! tu lis une réponse sur deux ou quoi?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  fwrite panique ??

 

Sujets relatifs
fwrite, fread...[C] petit problème avec fwrite et fread (resolu)
Souci avec fwrite[C] problème avec la fonction fwrite(...)
[PHP] fwritefread et fwrite [ - Job's Done - ]
probleme avec fwrite[C/C++]Cariage Return dans un string et fwrite
LISP Panique 
Plus de sujets relatifs à : fwrite panique ??


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)