Se viene aperto un file utilizzando il seguente comando:L'apertura di un file in modalità 'a +'
FILE *f1=fopen("test.dat","a+");
La pagina man recita:
un +
aperto per la lettura e aggiungendo (scrivere alla fine del file). Il file viene creato se non esiste. La posizione iniziale del file per la lettura è all'inizio del file, ma l'output è sempre aggiunto alla fine del file.
Così fa f1
hanno 2 di offset puntatori separati, uno per leggere & un altro per la scrittura?
Può anche essere utile sapere che questo è in genere implementato in termini di 'aperto' con il flag O_APPEND sui sistemi POSIX: http://pubs.opengroup.org/onlinepubs/7908799/xsh/open.html –
In case fseek non viene chiamato prima della lettura, molti spazi sono stampati nel codice seguente. Non mi aspettavo di stampare nulla sullo schermo. Ma c'è un motivo per cui gli spazi vengono stampati? Ciò significa che EOF non viene rilevato correttamente. Se si annulla il commento di seguito, i dati vengono stampati correttamente sullo schermo. 'int main() { FILE * fp1; char ch; fp1 = fopen ("m.txt", "a +"); fput ("dati aggiunti", fp1); // fseek (fp1,0, SEEK_SET); while ((ch = getc (fp1))! = EOF) { putc (ch, stdout); } fclose (fp1); return 0; } ' –