Salta ai contenuti. | Salta alla navigazione

Strumenti personali

File di testo e file binari

importante

mentre leggevo i lucidi mi è venuto un dubbio, cosa vuol dire che i file di testo necessitano di una conversione tra ogni lettura e scrittura ??

significa che, mentre per leggere un dato da un file binario il C ricopia i byte che sono sul file sull'area di memoria stabilita dalla fread, nella fscanf deve eseguire delle conversioni.

Ad esempio, il numero 123, inteso come short int, e` costituito da 16 bit (2 byte):

00000000 01111011

quindi sul file binario ci sono proprio questi due byte: 00000000 01111011.

Se leggo con una fread:

    short int i;
fread(&i,2,1,f);

per leggere questo dato sulla una variabile i, il C non deve fare alcuna conversione: ricopia i 2 byte sulla variabile i.

Se, invece, avessi usato un file di testo, avrei dovuto rappresentare il numero 123 come sequenza di 3 caratteri: '1', '2' e '3'. Ciascuno di questi caratteri e` rappresentato con il suo codice ASCII:

'1' = 00110001
'2' = 00110010
'3' = 00110011

quindi sul file di testo si trova la sequenza di bit: 00110001 00110010 00110011.

Quando il C esegue una fscan("%d",&i), la sequenza 00110001 00110010 00110011 deve essere convertita nel suo significato, che è il numero 123, che come dicevamo, si rappresenta con 00000000 01111011, prima di poter scrivere sulla variabile i.

Un analogo discorso vale per la scrittura.