c - fread 是否对大文件失败?

标签 c large-files fread

我必须分析一个 16 GB 的文件。我正在使用 fread()fseek() 按顺序读取文件。可行吗? fread() 可以处理这么大的文件吗?

最佳答案

你没有提到语言,所以我假设是 C。

我没有发现 fread 有任何问题,但是 fseekftell 可能有问题。

这些函数使用 long int 作为保存文件位置的数据类型,而不是像 fpos_t 甚至 size_t 这样的智能类型。这意味着他们可能无法处理超过 2 GB 的文件,当然也可能无法处理 16 GB 的文件。

您需要查看您平台上的long int 有多大。如果它是 64 位,你很好。如果它是 32,则在使用 ftell 测量距文件开头的距离时可能会遇到问题。

考虑改用 fgetposfsetpos

关于c - fread 是否对大文件失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825896/

相关文章:

r - 数据表 fread 与其他目录中的 zip 文件,名称中包含空格

c - 窗口看门狗定时器STM32F4

c - 防止 exe 文件关闭

c - 写入帧缓冲区

java - 如何从 GAE 下载大 Zip

version-control - 是否有允许您永久删除文件的版本控制系统?

xml - 从 XML 文件随机采样到 R 中的数据帧

c - C 中的 ARM11 仿真器

php - 在文本文件中写入和读取 php 对象?

c - 从文件中动态读取结构时 fread 不工作