Überschreiben Sie die Datei mit append-Modus für fopen
Ich bin mit fopen
schreiben einer Binär-Datei, und verwenden Sie die cstdio (stdio.h)
Bibliothek durch legacy-code, und es muss cross-Plattform-kompatibel mit Windows und Linux.
Für den Prototyp, FILE * fopen ( const char * filename, const char * mode );
ich bin mit const char * mode = "ab"
, die angefügt werden, um eine binäre Datei. Schreiben Operationen Anhängen von Daten am Ende der Datei. Die Datei wird erstellt falls Sie nicht vorhanden ist.
Habe ich N Anzahl der Eingabe-Dateien, wo ich die Verarbeitung von Daten aus und schreiben in eine Ausgabedatei für jeden Typ, wo ich M-Typen. Ich Prozess eine Eingabe-Datei und schreibt die Daten an die entsprechende Ausgabe-Datei. Werde ich dann schließen, dass it-input-Datei und öffnen (i + 1) - te, und wiederholen Sie den Vorgang, indem Sie die Daten aus der input-Datei für die Ausgabe-Dateien.
, Wenn eine Ausgabe-Datei gibt es am Anfang auf die ausführbare Datei, ich möchte es gelöscht. Wenn es vorhanden ist und ich Sie nicht löschen, dann wenn ich den "wb"
- Modus, dann wird es nur Anhängen von Daten an die Ausgabe-Datei, was zu Doppelarbeit ich nicht will. Ich bin offen für eine boost-Lösung, die ich gerne pflegen standards gut wie möglich (ich.e zu vermeiden, POSIX, wenn möglich)
Versuchen Sie zu klären, Ihr Ziel deutlich mehr, ich kann nicht wirklich sagen, aus deinem Beitrag und den code, wenn Sie möchten, überschreiben (löschen) vorhandenen Dateien oder vermeiden Sie diese. Auch, dein code macht nicht viel Sinn, weil das öffnen einer vorhandenen Datei im write-Modus wird es gelöscht.
InformationsquelleAutor Elpezmuerto | 2010-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Weg,
Den "w" - Modus sollte die Datei überschrieben werden soll. Es ist "ein" - Modus, vermeiden Sie das löschen einer Datei, die bereits existiert.
EDIT: Du kannst auch
remove (const char * filename)
wenn Sie möchten, löschen Sie die Dateien an den Anfang der Ausführung. Wenn das der Fall ist, dann muss man nie verwenden Sie die "wb" - Modus.InformationsquelleAutor sas4740
Eine Möglichkeit wäre die Verwendung
open
(_open
für Windows) erstellen Sie die entsprechende Datei-handle, und verwenden Sie dannfdopen
(_fdopen
für Windows) zum erstellen einer stdio-Griff aus ihm heraus. Sie müssen einige Präprozessor-Magie zu behandeln, die Tatsache, dass die Namen nicht genau das gleiche in Linux und Windows:InformationsquelleAutor R Samuel Klatchko
Wenn Sie möchten, überschreiben statt Anhängen, warum man nicht einfach den Modus "wb"? "w" überschreibt die Datei beim schreiben.
den Nagel auf den Kopf
InformationsquelleAutor mipadi