0

特定の位置で、C++ を介して、サイズが 1 MB の既存の空白のバイナリ ファイルに書き込もうとしています。

ofstream of( filename, ofstream::binary );
of.seekp(1600, of.beg);
of.write(arr, 1024);
of.close();

空のファイルは、次の前にこのバッファーをファイルに書き込むことによって作成されます。

char *buffer = (char*)malloc(size);     
memset(buffer, ' ', size);

しかし、このコードは 1MB の空白ファイル全体を切り捨てて、この 1KB のコンテンツを書き込むだけで、ファイルのサイズは 1KB になります。

appas well asateモードも使ってみました。appこのようなモードを試したとき:

ofstream of( filename, ofstream::binary | ofstream::app );
of.seekp(1600, of.beg);
of.write(arr, 1024);
of.close();

ファイルの末尾にコンテンツを追加します。したがって、ファイルのサイズは 1MB+1KB になります。

私がやろうとしているのは、ファイル内の1KBのデータ(現在は空白です)をいくつかのデータで上書きすることです。ファイルサイズやその他のデータを変更しないようにします。

どこで間違っていますか?

4

1 に答える 1