发件人:fred@genesis.demon.co.uk (Lawrence Kirby)
新闻组:comp.lang.c
主题:回复:文件大小
日期:1999 年 6 月 23 日星期三 00:05:27 GMT
消息 ID:<930096327snz@genesis.demon.co.uk>

在文章 <7ko6mg$66b$1@eskinews.eskimo.com> scs@eskimo.com “Steve Summit” 写道
> ...但你说得对,SEEK_END 仍然是个棘手的问题。

假设这是一个真正的问题(就像 UCHAR_MAX > INT_MAX 的可能性是一个真正的问题一样)。我的猜测是,任何能够确定精确文件大小的平台都会在二进制流上正确处理 SEEK_END。如果你担心,请在程序文档中说明该假设,但不必为此烦恼。

仍然有充分的理由不获取文件大小,例如:

  1. 文件可能不可搜索,甚至没有大小(例如,来自控制台/串行端口/tty/管道/套接字的输入)。

  2. 文件大小在确定后和使用前可能会发生变化。

然而,如果你确实需要找到一个文件(你知道它是一个常规文件)的大小,而不必实际扫描其整个内容,那么在二进制流上使用 fseek/SEEK_END/ftell 是最可移植的方法。

-- 
-----------------------------------------
Lawrence Kirby | fred@genesis.demon.co.uk
Wilts, England | 70734.126@compuserve.com
-----------------------------------------