Comment déterminer si un fichier est vide? Le fichier est ouvert par un programme C exécuté sur la plate-forme Windows. Je veux ouvrir un fichier en mode ajout, et, s'il est vide, d'abord imprimer un en-tête.Comment puis-je déterminer si un fichier est vide?
// 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);
Je me attendais ftell
pour retourner la taille du fichier en cours si le fichier n'a pas été vide, ce qui se produit parce que le code ci-dessus est mis en boucle. Toutefois, ftell
renvoie toujours 0
et l'en-tête est imprimé plusieurs fois.
Je sais que je pourrais fopen
avec r
et utiliser fseek
/ftell
/fclose
puis fopen
à nouveau avec a+
, mais je pense qu'il est possible de le faire sans ouvrir et fermer le fichier plusieurs fois.
Les opérations d'E/S sur fichiers varient d'un système d'exploitation à l'autre, alors ... quel est le système d'exploitation avec lequel vous travaillez? –
'Impossible d'ouvrir le fichier de sortie CSV ...' est l'exemple canonique d'un message d'erreur * bad *. Incluez le nom du fichier réel et la raison de l'erreur ('man perror' et' man strerror'). –
@EitanT: c'est pour Windows –