Binaires et textes

c’est quoi la différence entre les fichiers (ou les streams) binaires
et textes ?
je vois qu’il y a une différence dans les descriptions des
fonctions ftell/fseek de la bilbiothèque stdio en C.
J’ai l’impression que la notion de fichier texte
est une abstraction parce que les fichiers sont différents
sur les différents OS ?
Je suis sur la voie ?
Est-ce qu’un fichier sait qu’il est texte ou binaire ?
C’est écrit dans un en-tête ? non hein ?
voilà voilà …

Ce message a été édité par full_metal_paupiette le 29/12/2003

Tout depend du format utilise pour representer des characteres. Traditionellement un fichier texte est sur 7 bits (ascii), un fichier binaire sur 8 (par byte)… Aujourd’hui ASCII est en train de se faire remplacer progressivement (surtout sous win32) au profit de format plus evolues comme UTF8, capables de representer beaucoup plus de caracteres.

J’ajouterais que stdio.h est commun a tous les OS, et doit faire pareil
partout.

Et une des grandes differences (tres debile) entre windows et Unix,
c’est le passage a la ligne (
) qui n’est pas le meme sous Unix (
)
et sous Win(
), autrement dit, les fameux CRLF (Carriage Return,
Line Feed).

Du coup, un fwrite de “hello world
” ne s’ecrira pas pareil dans le
fichier si tu l’ouvre en binaire ou en text (enfin, sous windows, quoi)

(Glop: euh la lecture/ecriture en text, ca marche en 8 bits, hein:

  The mode string can also include the
letter  ``b’’  either

   as  a last character or as a

character between the charac­

   ters in any of the two-character

strings described  above.

   This  is  strictly for

compatibility with ANSI X3.159-1989

   (``ANSI C'') and has no effect;

the ``b’’  is  ignored  on

   all  POSIX 

conforming  systems,  including Linux.  (Other

   systems may treat text files and

binary files differently,

   and adding the ``b'' may be a good

idea if you do I/O to a

   binary file and expect that your

program may be ported  to

   non-Unix environments.)

  (from man fopen)

)

En gros, le “b”, c’est pour avoir une compatibilite text (ou non) avec
windows.

LoneWolf

Osons la portabilite (et les charsets a la con made in Microsoft)

OK super.
C’est plus clair comme ça.