在c fseek中,fopen这个所有函数适用于long int意味着只处理2 gb的文件。 现在我如何打开大小超过2 GB的文件?
答案 0 :(得分:11)
正如评论者已经解释的那样,是否可以打开超过2GB的文件取决于操作系统和C库,而不是sizeof(long)
上的编译器。如果你的操作系统支持这样的文件,你应该可以fopen
,尽管你可能需要设置一个标志(Linux的#define _FILE_OFFSET_BITS 64
)。
然后,fseek
确实无法在一次通话中寻找比LONG_MAX
更远的位置。您可以在循环中多次调用fseek
,这可能很麻烦,或者检查您的平台是否有fseeko
,它采用off_t
类型的偏移量参数。如果设置了正确的选项,那么该类型应足够大以捕获系统上任何(常规)文件的大小。 fseeko
适用于较新的Linux和所有符合POSIX-2001标准的操作系统。