我必须分析一个 16 GB 的文件。我正在使用 fread()
和 fseek()
按顺序读取文件。可行吗? fread()
可以处理这么大的文件吗?
最佳答案
你没有提到语言,所以我假设是 C。
我没有发现 fread
有任何问题,但是 fseek
和 ftell
可能有问题。
这些函数使用 long int
作为保存文件位置的数据类型,而不是像 fpos_t
甚至 size_t
这样的智能类型。这意味着他们可能无法处理超过 2 GB 的文件,当然也可能无法处理 16 GB 的文件。
您需要查看您平台上的long int
有多大。如果它是 64 位,你很好。如果它是 32,则在使用 ftell
测量距文件开头的距离时可能会遇到问题。
考虑改用 fgetpos
和 fsetpos
。
关于c - fread 是否对大文件失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825896/