Mein Code zur Zeit etwa wie folgt aussieht (diese Schritte in mehrere Funktionen aufgeteilt):klar/Datei in C gestutzt, wenn bereits geöffnet in „r +“ Modus
/* open file */
FILE *file = fopen(filename, "r+");
if(!file) {
/* read the file */
/* modify the data */
/* truncate file (how does this work?)*/
/* write new data into file */
/* close file */
fclose(file);
}
Ich weiß, dass ich mit in "w"
die Datei öffnen konnte Modus, aber ich möchte das in diesem Fall nicht tun. Ich weiß, es gibt eine Funktion ftruncate
in unistd.h
/sys/types.h
, aber ich möchte diese Funktionen nicht verwenden, mein Code sollte sehr portabel sein (auch auf Windows).
Gibt es eine Möglichkeit, eine Datei zu löschen, ohne sie zu schließen/wieder zu öffnen?
OP möchte eine plattformunabhängige Lösung und möchte die Datei nicht erneut öffnen. Und immer noch r +. :) – askmish
@askmish Was ist nicht möglich :-P –
@Nkos: Es ist möglich, aber die optimale Lösung wäre wirklich komplex (einschließlich Kernel-Aufrufe, gepufferte Mechanismen, etc.), die OP-Frage scheint übertrieben. :( – askmish