Leeren von fopen () -ed-Dateien, die im Aktualisierungsmodus zwischen Lese- und Schreibvorgängen geöffnet wurden. Explizites Leeren erforderlich?

Ich habe dies über das Umschalten zwischen Lese- und Schreibvorgängen (und umgekehrt) für Dateien gelesen, die zum Aktualisieren geöffnet wurdenfopen() (VERKNÜPFUNG)

Msgstr "" "Bei Dateien, die zum Aktualisieren geöffnet sind (Dateien, die ein" + "- Zeichen enthalten) und für die sowohl Eingabe - als auch Ausgabeoperationen zulässig sind, sollte der Stream zwischen den folgenden Schreiboperationen geleert (fflush) oder neu positioniert (fseek, fsetpos, rewind) werden durch eine Leseoperation oder eine Leseoperation, die das Dateiende nicht erreicht hat, gefolgt von einer Schreiboperation. "

Es gibt zwei Dinge, die ich hier hervorheben möchte

Der Stream sollte gespült (fflush) oder neu positioniert (fseek, fsetpos, rewind) werdenzwischen einer Schreiboperation, gefolgt von einer Leseoperationoder eine Leseoperation, bei der das Dateiende nicht erreicht wurde, gefolgt von einer Schreiboperation.

1) Was den ersten Punkt betrifft, tun wir das?ausdrücklich Ich meine, nehmen wir an, wir wollen in eine neue Datei schreiben und sie dann zurücklesen. In diesem Fall verwenden wirfseek() oderrewind() Nach dem Schreiben an den Anfang der Datei zu gelangen, macht Sinn, und als Nebeneffekt wird der Puffer geleert. Was ich jedoch wissen möchte, ist, was passieren würde, wenn wir den ersten Teil eines bereits aktualisierten / überschriebenen Dokuments ausführen vorhandene Datei mit neuen Daten, aber sobald wir fertig sind, wollen wirBeginnen Sie sofort mit dem Lesen der verbleibenden alten Daten ab diesem PunktMüssen wir so etwas benutzen?fseek(pFile,0,SEEK_CUR) so dass wir den Puffer für diewrite-read Übergang, und zur gleichen Zeit, ändert sich die Position des Dateizeigers nicht? Die gleiche Verwirrung ergibt sich auch aus dem zweiten Szenario, wenn wir die erste Hälfte einer Datei lesen wollen, undunmittelbar danach möchte dort anfangen zu schreiben. Bitte beantworte dies.

2) Der zweite Teil überreading operation which did not reach the end-of-file scheint zu implizieren, dass wenn eine Leseoperation das Ende der Datei erreicht und wir danach schreiben wollen, wir nicht den Puffer brauchen, um dafür geleert zu werdenread-write Kannst du bestätigen, dass es das ist, was es bedeutet?write-read Übergang braucht Spülung und nichtread-write Übergang, besonders wenn das Leseende erreicht ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage