Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouverture de fichier en mode binaire

4 réponses
Avatar
Noé Falzon
Bonjour,
en lisant la référence pour la fonction fopen, je vois qu'il est
possible d'ouvrir un fichier en "mode binaire". Qu'est-ce que cela
signifie ? À l'usage je n'ai pas trouvé de différence (mais mon usage
est très limité)

Merci d'avance,
NF
--
"Je ne deteste que les bourreaux" -- Albert Camus

Pour m'écrire un mail, veuillez retirer PASDEPUB de mon adresse ;)

4 réponses

Avatar
Anthony Fleury
Noé Falzon wrote:

Bonjour,


Bonjour,

en lisant la référence pour la fonction fopen, je vois qu'il est
possible d'ouvrir un fichier en "mode binaire". Qu'est-ce que cela
signifie ? À l'usage je n'ai pas trouvé de différence (mais mon usage
est très limité)


Pour faire simple, quand on ouvre un fichier sans le mode binaire, on
considère ce fichier comme un fichier texte. Ce qui fait que certains
caractères ne devraient pas s'y trouver. Ceci peut provoquer une fin de
fichier prématurée, car certaines valeurs selon le système peuvent
représenter EOF (c'est le cas par exemple de 0x1A sous msdos...) De plus,
dans le mode binaire, les caractères de passages à la ligne ne sont pas
interprétés comme tels. Ce qui fait que le contenu du fichier n'est pas «
altéré » par quelque modification que ce soit.

En gros, lorsque l'on veut traiter autre chose qu'un fichier texte normal,
on ouvre en mode binaire si on ne veut pas avoir de soucis.

--
Anthony Fleury

Avatar
Horst Kraemer
Noé Falzon wrote:

Bonjour,
en lisant la référence pour la fonction fopen, je vois qu'il est
possible d'ouvrir un fichier en "mode binaire". Qu'est-ce que cela
signifie ? À l'usage je n'ai pas trouvé de différence (mais mon usage
est très limité)


Le mode "texte" est un niveau d'abstraction au dessus du niveau des
bytes "crus" du fichier. De différents systèmes d'exploitation se
servent de données différentes pour marquer une "fin de ligne" dans le
fichier. Sous MS-DOS/Windows une fin de ligne est marquée par les deux
caractères consécutifs 0x0d 0x0a (13 10), sur le Mac par un seule byte
0x0d (13) et sous UNIX en général par un seul byte 0x0a (10) - et il y
a aussi des systèmes où une fin de ligne est marquée par le byte 0.
Dans un programme C toute fin de ligne sous n'importe quel système
d'exploitation apparait en forme du caractère 'n' dont la valeur
numérique n'intéresse pas. fputc('n',file) produit donc toujours la
"bonne" fin de ligne sur tout système d'exploitation si le fichier est
ouvert en mode "texte". Sous Wndows le programme produira la séquence
0x0d 0x0a. En plus une implémentation sous Windows interprète le byte
0x01a (26) dans le fichier ouvert en mode texte pour des raison
historiques comme fin "logique" du fichier bien que le fichier
physique pourrait toujours contenir un nombre quelconque de bytes.

Un fichier ouvert en mode binaire interprète les bytes comme il sont
sans y attacher des significations spéciales.

Sous Linux il n`y pas de différence entre les deux modes.

--
Horst

Avatar
Noé Falzon
D'accord, je comprends.
Merci !

--
"Je ne deteste que les bourreaux" -- Albert Camus

Pour m'écrire un mail, veuillez retirer PASDEPUB de mon adresse ;)
Avatar
Emmanuel Delahaye
Anthony Fleury wrote on 19/05/05 :
En gros, lorsque l'on veut traiter autre chose qu'un fichier texte normal,
on ouvre en mode binaire si on ne veut pas avoir de soucis.


ou pour traiter un fichier texte fait par un autre système...

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

I once asked an expert COBOL programmer, how to
declare local variables in COBOL, the reply was:
"what is a local variable?"