View Single Post
Old 23-09-2011, 15:55   #3
british
Member
 
L'Avatar di british
 
Iscritto dal: Sep 2008
Città: Milano
Messaggi: 126
Secondo lo standard (C89 mi pare) esistono due tipi di file: testo e binari. Non è però richiesto che il sistema operativo distingua tra i due.

Un file di testo è caratterizzato dall'essere diviso in linee, separate da un qualche tipo di sequenza, che dipende dal sistema operativo: LF(0x0a) su Unix, CR(0x0d) sui vecchi MacOS, CRLF su DOS,Windows,OS/2.

E qui c'è il trucco:
su Unix, per esempio, non fa differenza aprire un file con o senza il "b" (vedi anche man 3 fopen): per ogni "a capo logico" nel file c'è un byte (LF) e quello ti becchi.
Su Win, per ogni a "capo" logico nel file ci sono due byte: CR e LF. se apri un file come "b" li vedi entrambi, se lo apri come testo la sequenza ti viene tradotta al volo in un solo LF.

In scrittura avviene il contrario: se sei in modalità testo il tuo LF viene scritto senza modifiche su Unix e invece trasformato in un CRLF su Win, se sei in modalità binaria nessuna modifica accade e ogni byte viene scritto raw.

vedi anche http://en.wikipedia.org/wiki/Newline

ciao!

british
british è offline   Rispondi citando il messaggio o parte di esso