大きなバイナリファイル(例えば100,000,000の浮動小数点数)がある場合、C(またはC++)でファイルを開き、ファイル全体をメモリにロードする必要はありません(つまり、62,821,214浮動小数点数はどのようにすばやく見つけることができますか)。もう1つ質問ですが、ファイル全体を書き直すことなくファイル内の特定のfloatを変更する方法はありますか?C/C++でのバイナリファイルの読み書き
ように私は、関数を想定しています。同様に
FILE *f = fopen(fileName, "rb");
fseek(f, idx * sizeof(float), SEEK_SET);
float result;
fread(&result, sizeof(float), 1, f);
、あなたが書くことができます:あなたはフロートのサイズはsizeof(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?
}
書き込みについては、「+」ではなく「r +」モードで開いてください。追加モードでは、どこにシークしても、書き込みは常にファイルの最後に移動します。 –