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

  FORUM HardWare.fr
  Programmation
  C

  ecrire dans un fichier binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ecrire dans un fichier binaire

n°1126239
demo2000
Posté le 21-06-2005 à 13:30:02  profilanswer
 

Bonjour,
je fais des traitement sur un fichier binaire, et je met le resultat dans un autre fichier.

Code :
  1. source = fopen(fichier-entrer, "rb" );
  2. dest = fopen(fichhier-sortant, "wb" );
  3. fread(buf, 1, nb, source); //lire la donnée à partir du fichier source (entrer)
  4. //traitement
  5. fwrite(buf, 1, nb, dest); // ecrire la donnée dans le fichier sortant
  6. .....


ça marche normal.
je voudrais faire les traitement et écrire dans le même fichier entrer (fichier source) j'arrive pas ?
Merci

mood
Publicité
Posté le 21-06-2005 à 13:30:02  profilanswer
 

n°1126241
0x90
Posté le 21-06-2005 à 13:33:06  profilanswer
 

certains le dirons mieux que moi, 'fin en général faut éviter de lire et écrire en même temps dans le même fichier, vaut mieux lire sur un, écrire sur un autre, et à la fin, tu renomme le nouveau avec le nom de l'ancien pour l'écraser.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1126246
Elmoricq
Modérateur
Posté le 21-06-2005 à 13:39:12  profilanswer
 

demo2000 a écrit :


je voudrais faire les traitement et écrire dans le même fichier entrer (fichier source) j'arrive pas ?


 
Tant mieux. C'est un nid à catastrophes.

n°1126247
demo2000
Posté le 21-06-2005 à 13:39:28  profilanswer
 

oui je sais avec :

Code :
  1. rename()


mais dès fois on à besoin d'éspace alors ...  
merci

n°1126248
pascal_
Posté le 21-06-2005 à 13:40:41  profilanswer
 

demo2000 a écrit :

Bonjour,
je fais des traitement sur un fichier binaire, et je met le resultat dans un autre fichier.

Code :
  1. source = fopen(fichier-entrer, "rb" );
  2. dest = fopen(fichhier-sortant, "wb" );
  3. fread(buf, 1, nb, source); //lire la donnée à partir du fichier source (entrer)
  4. //traitement
  5. fwrite(buf, 1, nb, dest); // ecrire la donnée dans le fichier sortant
  6. .....


ça marche normal.
je voudrais faire les traitement et écrire dans le même fichier entrer (fichier source) j'arrive pas ?
Merci


 
Ca veut dire quoi "j'arrive pas" .
A la fin de la lecture, il faut que tu te remette avec fseek au début, et tu écris dessus tes anciennes données, il n'y a pas de problème (sauf si tu réécris quelque chose de plus court que l'ancien fichier).

n°1126258
Elmoricq
Modérateur
Posté le 21-06-2005 à 13:48:02  profilanswer
 

pascal_ a écrit :

A la fin de la lecture, il faut que tu te remette avec fseek au début, et tu écris dessus tes anciennes données, il n'y a pas de problème (sauf si tu réécris quelque chose de plus court que l'ancien fichier).


 
C'est un gros "sauf" qui contraint d'ores et déjà à passer par un autre fichier.
 
Mais surtout, il se passe quoi si le programme crash, pour une raison ou pour une autre, en plein traitement d'un fichier de données de quelques dizaines de méga ?
Ton code n'assure pas l'intégrité des données traitées, ce qui est potentiellement catastrophique. Et "potentiellement", en informatique, signifie "ça va arriver".

n°1126259
0x90
Posté le 21-06-2005 à 13:49:28  profilanswer
 

la fonction truncate, c'est pas standard ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1126261
demo2000
Posté le 21-06-2005 à 13:50:12  profilanswer
 

c.a.d :
quand je lance mon programme. j'aurais un seul fichier en sortie (resultat = source après traitement) et non 2 (source et resultat)
pascal_
 

Citation :


  ... il n'y a pas de problème (sauf si tu réécris quelque chose de plus court que l'ancien fichier).
 


 
justement la taille change  
Merci encore

n°1126268
Elmoricq
Modérateur
Posté le 21-06-2005 à 13:53:58  profilanswer
 

0x90 a écrit :

la fonction truncate, c'est pas standard ?


 
A priori, c'est POSIX, mais pas ANSI :
http://www.schweikhardt.net/identifiers.html
 
 
 

Citation :

quand je lance mon programme. j'aurais un seul fichier en sortie (resultat = source après traitement) et non 2 (source et resultat)


 
Une fois le second fichier généré, il suffit d'effacer le premier et de renommer le second.


Message édité par Elmoricq le 21-06-2005 à 13:54:58

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

  ecrire dans un fichier binaire

 

Sujets relatifs
Pb lecture fichier xml dans flashCréer un fichier HTML à partir d'un formulaire !
Suppression de fichierPb pour extraire d'un fichier
Lire un fichier texte sur un ordinateur du réseauEcrire une page html avec des couleurs
Mettre dans un fichier (ou une variable) le résultat d'une génération[C] [réglé] Récupérer le contenu d'un fichier texte ?
Ecrire et lire directement un fichier en binaire... (java)[C] ecrire un tableau[N][N] en binaire dans un fichier
Plus de sujets relatifs à : ecrire dans un fichier binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR