C语言之读取大文件的方法

时间:2016-12-16 16:31来源:凌阳教育 作者:larran 点击:
  在我们的c语言学习中,经常会需要用C操作文件,但是使用fopen和fseek的时候,在32位操作系统中,没办法操作2G以上的文件,今天凌阳嵌入式Linux培训讲师:王老师教大家通过open64、lseek解决这个问题:
 
  1 #include < span>stdio.h<
  2// #define _LARGEFILE_SOURCE
  3// #define _LARGEFILE64_SOURCE
  4// #define _FILE_OFFSET_BITS 64
  5#include < span>sys/types.h<
  6#include < span>sys/stat.h<
  7#include < span>unistd.h<
  8#include < span>stdio.h<
  9#include < span>fcntl.h<
  10#include < span>errno.h<
  11
  12int main(int argc, char*argv[])
  13{
  14 off_t  file_last_pos;
  15 off_t end =0;
  16// FILE           *fp;
  17int fp = open64(argv[1], O_RDONLY);
  18if (fp < span>0 ) {
  19 printf("can't open file [%s]\n", strerror(errno));
  20return1;
  21 } else {
  22 printf("file open success\n");
  23 }
  24 file_last_pos = lseek(fp, 0, SEEK_END);
  25 printf("Size: %1d \n",file_last_pos);
  26 close(fp);
  27return0;
  28}
  //这行GCC参数很重要,原来是希望通过define的方式来解决的,但是最后还是只能通过这种方式
  gcc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 test.c -o test
分享到: