Как определить, является ли файл пустым? Файл открывается программой C, работающей на платформе Windows. Я хочу открыть файл в режиме добавления, и, если пустой, сначала напечатайте заголовок для него.Как определить, пуст ли файл?
// 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);
Я ожидал ftell
вернуть текущий размер файла, если файл не был пуст, что происходит потому, что приведенный выше код зацикливается.
Однако ftell
всегда возвращает 0
, а заголовок печатается несколько раз.
Я знаю, что я мог fopen
его r
и использовать fseek
/ftell
/fclose
, а затем fopen
его снова a+
, но я думаю, что это можно сделать без открытия и закрытия файла несколько раз.
Операции ввода-вывода файлов различаются между операционными системами, поэтому ... с какой ОС вы работаете? –
'Невозможно открыть выходной файл CSV ...' является каноническим примером сообщения об ошибке * *. Укажите фактическое имя файла и причину ошибки ('man perror' и' man strerror'). –
@EitanT: это для Windows –