如果我有一个大的二进制文件(假设它有 100,000,000 个浮点数),C(或 C++)有没有办法打开文件并读取特定的浮点数,而不必将整个文件加载到内存中(即我如何快速找出第 62,821,214 个浮点是什么)?第二个问题,有没有办法更改文件中的特定浮点数,而不必重写整个文件?
我设想的功能如下:
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?
}
你知道浮点数的大小是sizeof(float)
,所以乘法可以让你到达正确的位置:
FILE *f = fopen(fileName, "rb");
fseek(f, idx * sizeof(float), SEEK_SET);
float result;
fread(&result, sizeof(float), 1, f);
同样,您可以使用此方法写入特定位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)