Lecture d'un fichier

Signaler
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
-
salut:

J'ai écrit un programme C qui lit le contenu d'un fichier donné.
Le programme tourne bien avec les fichiers (*.txt) mais c'est ne pas le cas avec les fichiers (*.doc),en effet il affiche des lettres bizzards.
Je souhaite savoir la cause de cette probléme et s'il existe des solutions pour s'en sortir.

Et merci....

4 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
pour les fichiers autre que texte, ouvrir en binaire :
fopen(path, "rb);

cependant en ouvrant un fichier *.doc ne t'attend pas à récupérer le texte directement
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
Effectivement, un fichier *.doc ne contient pas uniquement le texte en ascii mais toute une ribambelle d'octets supplémentaires destinés à etre interprétés par word lors de l'ouverture.

Essaie d'enregistrer un nouveau document *.txt qui ne contient qu'un seul mot et tu verra que sa taille fera le nombre d'octets égal au nombre de lettres de ce mot, réittère l'opération avec word et tu verra que le fichier *.doc contenant ce mot fera quelques dizaines de milliers d'octets.

Pour t'en sortir, cherche plus d'info concernant ce format de texte enrichi. Personnelement je te conseille de lacher le *.doc et de t'intéresser plutôt au *.rtf (rich text format), parce que le .doc change avec chaque version d'office et est plus complexe.

eRoZion
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
Je viens de me souvenir que si c'est uniquement pour afficher sans sa mise en forme le texte que le fichier *.doc contient, il est possible de le récupérer (après il y aura probablement deux trois lettres avec accents à convertir si la sortie est en console) car il est stoqué en bloc ascii entre les offsets 0x500h et 0x1000h (0x600h et 0xA00h plus précisément je crois). Quand y'a des images ça fout un peu le bordel à ce niveau là je crois.

Toujours est'il qu'il est assez facile de coder un algo qui cherche cette ou ces zones de texte dans le fichier pour pouvoir ensuite réexploiter le texte contenu.

eRoZion
Messages postés
241
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 octobre 2007
1
CORRECTION
"car il est stoqué en bloc ascii entre les offsets ..."
-> car il est stoqué en bloc ascii dont le début se trouve entre les offsets ...

eRoZion