Come determinare se un file è vuoto? Il file viene aperto da un programma C in esecuzione sulla piattaforma Windows. Voglio aprire un file in modalità append e, se vuoto, prima stamparne un'intestazione.Come posso determinare se un file è vuoto?
// 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);
mi aspettavo ftell
per restituire la dimensione del file corrente se il file non era vuoto, che avviene perché il codice di cui sopra è in loop.
Tuttavia, ftell
restituisce sempre 0
e l'intestazione viene stampata più volte.
So che potrei fopen
con r
e utilizzare fseek
/ftell
/fclose
e poi fopen
di nuovo con a+
, ma penso che sia possibile farlo senza aprire e chiudere il file più volte.
Le operazioni di I/O file differiscono tra i sistemi operativi, quindi ... qual è il sistema operativo con cui si sta lavorando? –
'Impossibile aprire il file di output CSV ...' è l'esempio canonico di un messaggio di errore * errato *. Includere il nome del file effettivo e il motivo dell'errore ('man perror' e' man strerror'). –
@EitanT: questo è per Windows –