18.6怎么在读入文件前获得文件大小【C语言版】
如果文件大小指的是你从C 程序中可以读进的字符数量, 要得到这个精确的数字可能困难或不可能。
Unix 系统函数stat() 会给出准确的答案。有些系统提供了类似Unix 的stat()函数, 但只返回一个近似值。你可以调用fseek() 搜索到文件尾, 再调用ftell(), 或者调用fstat(), 然而这些方法都有同样的问题:
fstat() 不可移植, 通常返回和stat()一样的值; ftell() 并不保证可以返回字符计数, 除非是用于二进制文件, 但是, 严格来讲, 二进制文件并不一定支持fseek 搜索到SEEK END。某些系统提供filesize()
或filelength() 的函数, 但是它们明显的不可移植。你是否确定你必须预先知道文件大小?作为一个C 程序最准确的方法就是打开文件并读入, 也许可以重新整理代码, 使其边读入边计算文件大小。
Unix 系统函数stat() 会给出准确的答案。有些系统提供了类似Unix 的stat()函数, 但只返回一个近似值。你可以调用fseek() 搜索到文件尾, 再调用ftell(), 或者调用fstat(), 然而这些方法都有同样的问题:
fstat() 不可移植, 通常返回和stat()一样的值; ftell() 并不保证可以返回字符计数, 除非是用于二进制文件, 但是, 严格来讲, 二进制文件并不一定支持fseek 搜索到SEEK END。某些系统提供filesize()
或filelength() 的函数, 但是它们明显的不可移植。你是否确定你必须预先知道文件大小?作为一个C 程序最准确的方法就是打开文件并读入, 也许可以重新整理代码, 使其边读入边计算文件大小。