说一下这个基础知识 | 每日一练(152)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

读者:怎样在读入文件前, 知道文件大小?

小林:如果文件大小指的是你从 C 程序中可以读进的字符数量, 要得到这个精确的数字可能困难或不可能。

Unix 系统函数 stat() 会给出准确的答案。有些系统提供了类似 Unix 的 stat()函数, 但只返回一个近似值。

你可以调用 fseek() 搜索到文件尾, 再调用 ftell(), 或者调用 fstat(), 然而这些方法都有同样的问题: fstat() 不可移植, 通常返回和 stat()一样的值;

ftell() 并不保证可以返回字符计数, 除非是用于二进制文件, 但是, 严格来讲, 二进制文件并不一定支持 fseek 搜索到 SEEK END。

某些系统提供 filesize()或 filelength() 的函数, 但是它们明显的不可移植。你是否确定你必须预先知道文件大小?

作为一个 C 程序最准确的方法就是打开文件并读入, 也许可以重新整理代码, 使其边读入边计算文件大小。

正文完