¿Cómo puedo determinar si un archivo está vacío? El archivo se abre con un programa en C que se ejecuta en la plataforma de Windows. Quiero abrir un archivo en el modo de agregar y, si está vacío, primero imprimir un encabezado en él.¿Cómo puedo determinar si un archivo está vacío?
// 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);
que estaba esperando ftell
para devolver el tamaño actual del archivo si el archivo no estaba vacío, lo cual se debe a que el código anterior se enlaza.
Sin embargo, ftell
siempre devuelve 0
y el encabezado se imprime varias veces.
Sé que podría fopen
con r
y utilizar fseek
/ftell
/fclose
y luego otra vez con fopen
a+
, pero yo creo que es posible hacer esto sin necesidad de abrir y cerrar el archivo varias veces.
Las operaciones de E/S de archivos difieren entre sistemas operativos, entonces ... ¿con qué sistema operativo está trabajando? –
'No se puede abrir el archivo de salida CSV ...' es el ejemplo canónico de un mensaje de error * malo *. Incluya el nombre del archivo real y la razón del error ('man perror' y' man strerror'). –
@EitanT: eso es para Windows –