[英]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);
}
}
您可以使用fread64
、 fseek64
等的 64 位变体,也可以在包含标头之前使用#define _FILE_OFFSET_BITS 64
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.