Comment obtenir la taille du fichier en C ANSI, sans fseek et ftell?

Alors que la recherche de façons de trouver la taille d'un fichier donné un FILE*, je suis tombé sur cet article conseiller contre elle. Au lieu de cela, il semble encourager l'utilisation de descripteurs de fichier et fstat.

Cependant, j'étais sous l'impression que fstat, open et les descripteurs de fichiers, en général, ne sont pas aussi portable (Après un peu de recherche, j'ai trouvé quelque chose à ce effet).

Est-il un moyen pour obtenir la taille d'un fichier en C ANSI, tout en gardant en ligne avec les mises en garde dans l'article?

Veuillez noter que l'article que vous avez associé est Considéré comme Nocif. fseek/ftell (en fait fseeko/ftello, si vous avez POSIX, de sorte que vous pouvez traiter de gros fichiers) est la meilleure façon de déterminer la taille du fichier. Le statde remplacement échoue pour déterminer les tailles de certains non-régulier-fichiers bien défini tailles, tels que les périphériques de bloc (des partitions de disque, etc.).
Il n'est pas utile, mais... ouvrir un fichier en mode ajout d'œuvres: FILE* fp = fopen("teste.txt",""); size_t sz = ftell(fp);

OriginalL'auteur math4tots | 2012-03-22