Question 2.11

Come posso leggere/scrivere strutture da/a files di dati?


E` relativamente immediato scrivere una struttura usando fwrite:

	fwrite(&somestruct, sizeof somestruct, 1, fp); 
e una corrispondente invocazione fread puo` rileggerla. (Sotto il C pre-ANSI, e` richiesta una conversione (char *) sul primo argomento. Cio` che e` importante e` che fwrite riceve un puntatore a un byte, non un puntatore a una struttura.) Comunque, i file di dati cosi` scritti non saranno portabili (vedere domande 2.12 e 20.5). Notare anche che se la struttura contiene dei puntatori, solo i valori dei puntatori saranno scritti, ed e` estremamente improbabile che siano validi quando sono riletti. Infine, notare che per avere una ampia portabilita` bisogna usara la modalita` "b" quando si aprono i files con fopen; vedere domanda 12.38.

Una solutione piu` portabile, sebbene richiede un po' piu` lavoro all'inizio, consiste nello scrivere una coppia di funzioni per scrivere e leggere una struttura, campo-per-campo, in un modo portabile (forse anche leggibile da umani) .

Riferimenti: H&S Sez. 15.13 p. 381


Leggere di seguito: prev prossima su cima


Questa pagina e` di Steve Summit // Copyright 1995 // mail feedback