程序如何在32位机子上支持大文件读写

来源:互联网 发布:个性定制软件 编辑:程序博客网 时间:2024/04/27 20:55

今天在编写程序的时候,发现程序无法打开>4G的文件,获取文件的结构信息也获取不到,遂有这篇文章进行分享。

有如下几个步骤需要添加:

一:在所需要的头文件的#include之前添加如下几行代码:

#undef _FILE_OFFSET_BITS

#define _FILE_OFFSET_BITS 64

#undef _LARGEFILE_SOURCE

#define _LARGEFILE_SOURCE

#undef _LARGEFILE64_SOURCE

#define _LARGEFILE64_SOURCE

二:在编译程序的时候,加入如下选项:

 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE

在程序的函数中,要注意如下几个方面:

一:首先32位机器用fopen/fclose打开大文件没有问题,顺序读写操作while(!feof(fp)){ fread / fgets / fscanf }while(1){ fwrite / fputs / fprintf} 也没有问题。

二:由于32位机器下long32位,故

fseeko (FILE *stream, off_t offset, int whence)
off_t ftello(FILE *stream)

不能访问4G以上文件。此时要用

 fseeko (FILE *stream, off_t offset, int whence)
 off_t ftello(FILE *stream)