Wie lösche ich den gesamten Inhalt einer Datei in C?

Lesezeit: 2 Minuten

Benutzer-Avatar
Mudschahed

Ich habe eine Datei mit einigen Daten von Benutzer1. Ich möchte dieselbe Datei für Benutzer2 verwenden, indem ich den Inhalt der Datei lösche.

Meine Idee ist, dass, wenn ein neuer Benutzer kommt, die Daten des vorherigen Benutzers klar sein sollten und dieselbe Datei für den neuen Benutzer bereit sein sollte.

Benutzer-Avatar
binW

Wie @stefan sagte mit fopen() mit “w”-Modus erledigt die Arbeit für Sie. Wenn Sie eine Datei mit dem Flag “w” öffnen, wird eine leere Datei zum Schreiben erstellt. Wenn bereits eine Datei mit demselben Namen existiert, wird ihr Inhalt gelöscht und die Datei wird als leere neue Datei behandelt.

Wenn die Datei bereits geöffnet ist, können Sie sie verwenden freopen() Funktion von stdio.h mit dem “w”-Modus, da sie zuerst die Datei schließt und sie dann zum Schreiben wieder öffnet und löscht, was zuvor in der Datei war.

  • Wird die Datei für eine Datei mit 0666-Berechtigungen immer noch ihre 666-Berechtigungen behalten oder wird umask ins Spiel kommen und sie auf 644 setzen. Im Wesentlichen versuche ich zu wissen, ob sie den Inhalt der Datei löscht oder die Datei löscht und neu erstellen mit dem gleichen Namen (in diesem Fall würde es mit 644 gemacht werden)

    – Sam Thomas

    29. Mai 2018 um 21:12 Uhr

Benutzer-Avatar
Stefan

mit fopen(filename, flag) öffnen Sie es einfach mit flag= "w" oder "wb" und es wird gelöscht

  • danke stefan , aber ich möchte die DATEI FORCEFULLY löschen (explizit)

    – Mujahid

    27. Januar 2011 um 10:42 Uhr

  • ok gy!! aber während prog. Exekutive em Öffnen/Schließen (Anhängen) viele Male. ICH MÖCHTE DIE DATEI NUR LÖSCHEN, WENN IRGENDEINE Bedingung eintritt.

    – Mujahid

    27. Januar 2011 um 11:00 Uhr

  • @mujahid: Dann öffnen Sie es normal, BIS diese Bedingung eintritt, an welcher Stelle Sie es mit öffnen können w oder wb Flagge. Wenn Sie möchten, können Sie es sofort schließen, und öffnen Sie es dann, wenn Ihr Code normal ausgeführt wird, zum Anhängen.

    – Binäre Sorge

    27. Januar 2011 um 11:02 Uhr

  • @mujahid: Kein Grund zu schreien, wir können dich hören 🙂

    – rjnilsson

    27. Januar 2011 um 11:27 Uhr

Benutzer-Avatar
Eduard Karak

fclose(fopen("file.txt", "w"));

Warum das funktioniert:

schreiben: Erstellt eine leere Datei für Ausgabeoperationen. Wenn bereits eine Datei mit demselben Namen vorhanden ist, wird ihr Inhalt verworfen und die Datei als neue leere Datei behandelt.

(Zitat aus http://www.cplusplus.com/reference/cstdio/fopen/)

Benutzer-Avatar
garvitlnmiit

Es gibt zwei Möglichkeiten:

1. fd=open(filename,O_RDONLY | O_WRONLY | O_TRUNC);


2. [cat /dev/null > filename] for BASH. It can be directly used in c program using [system()] system call. 

   system("cat /dev/null > filename");   

Ich benutze:

fp=freopen(NULL,"w",fp);

1372820cookie-checkWie lösche ich den gesamten Inhalt einer Datei in C?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy