寻找 off64_t 偏移量的大文件不起作用

问题描述

这应该是对大文件的非常简单的查找操作,但是它总是失败并且永远不会改变偏移量。我感觉我的代码中缺少一些东西。 最小可重现示例:

#define _FILE_OFFSET_BITS 64
#define __USE_FILE_OFFSET64 1
#include <stdio.h>
#include <iostream>

int main() {
    FILE* file = fopen64("data","w+b");
    off64_t offset1 = 5000;
    off64_t offset2 = 1013309916216033280;
    fseeko64(file,offset1,SEEK_SET);
    std::cout << "Offset at: " << ftello64(file);
    fseeko64(file,offset2,SEEK_SET);
    std::cout << " Offset at: " << ftello64(file);
    if(offset2 != ftello64(file)){
        std::cerr << "Cannot seek to offset2.";
    }
    fclose(file);
    return 0;
}

预期输出是“偏移量:5000 偏移量:1013309916216033280”

当前输出是“无法寻求 offset2.Offset at: 5000Offset at: 5000”

我是否误解了 fseeko64 函数功能?还是我以错误的方式实施它? 此外,perror 函数正在打印“无效参数”,但没有提供更多详细信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)