微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决寻找 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 举报,一经查实,本站将立刻删除。