Wie kann ich feststellen, ob eine Datei leer ist? Die Datei wird von einem C-Programm geöffnet, das auf der Windows-Plattform ausgeführt wird. Ich möchte eine Datei im Append-Modus öffnen und, wenn sie leer ist, zuerst eine Kopfzeile ausdrucken.Wie kann ich feststellen, ob eine Datei leer ist?
// Open CSV & write header
report_csv = fopen("SNR.csv", "a+");
if (!report_csv) {
fprintf(stderr, "Unable to open CSV output file...");
return -1;
}
if (!ftell(report_csv)) {
fprintf(report_csv, "Column A;Column B;Column C\n");
}
// ... print data to file
fclose(report_csv);
Ich erwartete ftell
die aktuelle Dateigröße zurück, wenn die Datei nicht leer war, was geschieht, weil der Code oben geschlungen ist.
Allerdings gibt ftell
immer 0
zurück und die Kopfzeile wird mehrmals gedruckt.
Ich weiß, dass ich es mit r
und fseek
/ftell
/fclose
und dann fopen
es wieder mit a+
verwenden fopen
könnte, aber ich denke, dass es möglich ist, dies ohne Öffnung zu tun und Schließen der Datei mehrfach.
Datei-E/A-Vorgänge unterscheiden sich zwischen den Betriebssystemen, also ... mit welchem Betriebssystem arbeiten Sie? –
'CSV-Ausgabedatei kann nicht geöffnet werden ...' ist das kanonische Beispiel für eine * bad * -Fehlermeldung. Fügen Sie den tatsächlichen Dateinamen und den Grund für den Fehler ein ('man perror' und' man strarror'). –
@EitanT: das ist für Windows –