簡體   English   中英

C 處理大文件、fseek 和 fread

[英]C working with big files, fseek and fread

我正在編寫一個程序,我可能需要訪問大於~2GB 的文件。 只使用 fseek 和 fread 而不使用 ftell 是否適用於更大的文件?

int main() {
  unsigned long long int len;
  unsigned char *buffer; /* i know its not initialized */
  unsigned char *sbuffer = buffer;

  FILE *fp = fopen("test123", "rb");
  fread(fp, 8, 1, (void*) &len);

  while (len >= LONG_MAX) {
    fread(fp, 1, LONG_MAX, (void*) sbuffer);
    sbuffer += LONG_MAX;
    len -= LONG_MAX;
  }
  if (len) {
    fread(fp, 1, len, (void*) sbuffer);
  }
}

您可以使用fread64fseek64等的 64 位變體,也可以在包含標頭之前使用#define _FILE_OFFSET_BITS 64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM