我正在尝试使用 fseek 来逐步浏览一个非常大(~500 GB)的文件。由于 fseek 的第二个参数,偏移量,是一个 long int,我必须考虑到我想要的偏移量何时大于 2^31 - 1。这是我的解决方案:
fseek(file,offset % LONG_MAX,SEEK_SET);;
for (int i = 0; i < offset/LONG_MAX; i++)
{
fseek(file,LONG_MAX,SEEK_CUR);
}
其中 LONG_MAX 在 limits.h 中定义,offset 是 64 位整数。但是,for 循环中的 fseek 调用存在错误。它返回一个非零值,并且 perror 说“无效参数”。为什么我不能使用 LONG_MAX(定义为 2147483647L)作为偏移量?