8
votes

Comment lire un fichier binaire en C? (vidéo, images ou texte)

J'essaie de copier un fichier à partir d'une bibliothèque spécifiée dans le répertoire actuel. Je peux copier parfaitement les fichiers texte. Tous les autres fichiers deviennent corrompus. Le programme détecte une FEOF avant son entrée. xxx


0 commentaires

3 Réponses :


5
votes

Vous devez spécifier l'option "b" à fopen : xxx

sans elle, le fichier est ouvert dans le texte ( "T" mode ), et il en résulte la traduction de caractères de bout en ligne.


0 commentaires

2
votes

Vous devez ouvrir les fichiers au format binaire plutôt que le format de texte. Dans vos appels vers fopen , utilisez "rb" et "wb" plutôt que "r" " > "W" respectivement.


0 commentaires

18
votes

Êtes-vous sur une machine à Windows? Essayez d'ajouter "B" aux chaînes de mode dans les appels vers fopen .

de l'homme fopen (3):

La chaîne de mode peut également inclure la lettre 'B' en tant que dernier caractère ou en tant que caractère entre les caractères de l'une des cordes de deux caractères décrites ci-dessus. Ceci est strictement pour la compatibilité avec C89 et n'a aucun effet; Le 'B' est ignoré sur tous les systèmes confortables POSIX, y compris Linux. (D'autres systèmes peuvent traiter des fichiers texte et binaires les fichiers différemment et ajouter le 'B' peut être une bonne idée si vous faites des E / S à un fichier binaire et s'attendre à ce que votre programme puisse être porté à des non-différents environnements.)

0 commentaires