【问题标题】:Seeking a File Position > 2^32 in C [duplicate]在C中寻找文件位置> 2 ^ 32 [重复]
【发布时间】:2018-11-13 20:25:59
【问题描述】:

我正在编写一个程序来将大量数据写入文件,但该文件最终会足够大,以至于我无法搜索它,因为该位置将大于 32 位 计算机。我想寻找至少 2^35 的位置。这样做的正确方法是什么?

编辑: 我正在尝试制作一个跨平台程序,但我目前正在使用 Linux 32 位操作系统。

【问题讨论】:

  • 根据您正在开发的平台,将_FILE_OFFSET_BITS 定义为64 并使用标准库函数fseekoftello 可能会解决您的问题。
  • 什么操作系统? Windows SetFilePointer 可以进行 64 位查找。
  • 什么平台?大多数 64 位操作系统本机支持大于 2GB 的文件。
  • fseek() 不限于int 大小,而是long。你系统上的LONG_MAX 是什么?

标签: c file


【解决方案1】:

如果是标准的linux/glibc(不能担保别人?)环境:

  • #define _FILE_OFFSET_BITS 64 -- 将 off_t 转换为 64 位类型
  • 使用 stdio.h 中的 stdlib 函数 fseeko()ftello() 而不是常规函数

另请参阅它们各自的联机帮助页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-04
    • 2012-01-07
    • 1970-01-01
    • 2012-10-20
    • 2018-09-05
    • 2018-05-17
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多