特定の位置で、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 になります。
app
as well asate
モードも使ってみました。app
このようなモードを試したとき:
ofstream of( filename, ofstream::binary | ofstream::app );
of.seekp(1600, of.beg);
of.write(arr, 1024);
of.close();
ファイルの末尾にコンテンツを追加します。したがって、ファイルのサイズは 1MB+1KB になります。
私がやろうとしているのは、ファイル内の1KBのデータ(現在は空白です)をいくつかのデータで上書きすることです。ファイルサイズやその他のデータを変更しないようにします。
どこで間違っていますか?