gpt4 book ai didi

c++ - 在 C/C++ 中读取和写入二进制文件的中间部分

转载 作者:可可西里 更新时间:2023-11-01 18:43:34 25 4
gpt4 key购买 nike

如果我有一个大的二进制文件(假设它有 100,000,000 个 float ),在 C(或 C++)中有没有一种方法可以打开文件并读取特定的 float ,而不必将整个文件加载到内存中(即如何我可以快速找到第 62,821,214 个 float 吗)?第二个问题,有没有一种方法可以更改文件中的特定 float 而不必重写整个文件?

我设想的功能如下:

float readFloatFromFile(const char* fileName, int idx) {
FILE* f = fopen(fileName,"rb");

// What goes here?
}

void writeFloatToFile(const char* fileName, int idx, float f) {
// How do I open the file? fopen can only append or start a new file, right?

// What goes here?
}

最佳答案

你知道 float 的大小是sizeof(float),所以乘法可以让你到达正确的位置:

FILE *f = fopen(fileName, "rb");
fseek(f, idx * sizeof(float), SEEK_SET);
float result;
fread(&result, sizeof(float), 1, f);

同样,您可以使用此方法写入特定位置。

关于c++ - 在 C/C++ 中读取和写入二进制文件的中间部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com