problème de zero binaire dans un enregistrement

problème de zero binaire dans un enregistrement - C - Programmation

Marsh Posté le 21-06-2010 à 11:11:48    

Bonjour a tous,
Je vous ecris afin de trouver un peu d'aide. Mon problème est le suivant:
Je dois lire, ligne par ligne, un fichier en entrée, manipuler et modifier certaines parties de chaque ligne et ensuite reconstituer ces lignes avec les nouvelles données afin de recréer le fichier comme a l'origine le tout en langage C.
Hors mes lignes continnent des zéros binaires et ceci pose de sérieux problèmes. Toute la partie manipulation des données me pose pas de problème. MAis par contre, pour ce qui est de lire et ecrire une ligne dans un fichier lorsqu'il y a des zéros binaires c'est moins evident. Pour ce qui est d ela lecture j'ai l'impression que le bon vieux fgets fonctionne. Par contre mes essais avec fwrite, fprintf fputs ne marchent pas. Les zéros binaires ne sont pas pris en chatge et mettent le bazar dans mes données.  
Quelqu'un aurait'il une solution a ce problème??
Je vous remercie d'avance de votre aide.
Cdt
Thefifou

Reply

Marsh Posté le 21-06-2010 à 11:11:48   

Reply

Marsh Posté le 21-06-2010 à 11:23:15    

Si tu as des 0 binaires dans ton fichier, ce n'est pas un fichier texte.  Donc:
- l'ouvrir en tant que fichier binaire,
- utiliser fputc, fwrite, fgetc et fread et pas les fonctions qui manipulent des chaines (qui par definition sont terminees par un 0 binaire qui n'en fait pas partie -- il n'est pas impossible que pour fgets tu arrives a t'en sortir si tu sais comment faire la difference entre le 0 de fin et un 0 de donnee, mais attention au cas de la ligne trop longue, mais pour l'ecriture c'est pas possible).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 21-06-2010 à 11:46:48    

Ce sont effectivement des lignes très longues. Ce fichier provient d'un Z/OS (mainframe) il contient du texte et aussi des zeros binaires.
Il faudrait donc que je gère le tout en binaire?

Reply

Marsh Posté le 21-06-2010 à 12:00:56    

Oui

Reply

Marsh Posté le 21-06-2010 à 12:06:44    

Merci de vos conseils, je vais me lancer sur cette voie et voir si je m'en sors.
Merci a tous

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed