Wenn eine Datei geöffnet wird, um den folgenden Befehl:Öffnen einer Datei in 'a +' Modus
FILE *f1=fopen("test.dat","a+");
Der Mann Seite lautet:
a +
Öffnen zum Lesen und Anhängen (Schreiben am Ende der Datei). Die Datei wird erstellt, wenn sie nicht existiert. Die anfängliche Dateiposition zum Lesen befindet sich am Anfang der Datei, aber die Ausgabe wird immer an das Ende der Datei angehängt ( ).
So hat f1
haben 2 separaten Offset-Zeiger, ein für gelesene & andere zum Schreiben?
Es kann auch nützlich sein zu wissen, dass dies in der Regel in Bezug auf 'open' mit dem O_APPEND-Flag auf POSIX-Systemen implementiert ist: http://pubs.opengroup.org/onlinepubs/7908799/xsh/open.html –
In Fall fseek wird nicht vor dem Lesen aufgerufen, viele Leerzeichen werden im folgenden Code gedruckt. Ich habe erwartet, dass nichts auf dem Bildschirm gedruckt wird. Aber warum sollten Leerzeichen gedruckt werden? Das bedeutet, EOF wurde nicht korrekt gefunden. Wenn ich fseek unten auskommentiere, werden Daten korrekt auf dem Bildschirm gedruckt. 'int main() { DATEI * fp1; Zeichen ch; fp1 = fopen ("m.txt", "a +"); fputs ("Daten angehängt", fp1); // fseek (fp1,0, SEEK_SET); while ((ch = getc (fp1))! = EOF) { putc (ch, stdout); } fclose (fp1); Rückgabe 0; } ' –