我正在尝试通过 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
以及ate
模式。当我尝试app
这样的模式时:
ofstream of( filename, ofstream::binary | ofstream::app );
of.seekp(1600, of.beg);
of.write(arr, 1024);
of.close();
它将内容添加到文件的末尾。因此文件大小变为 1MB+1KB。
我想要做的是用一些数据覆盖文件中的 1KB 数据(目前它是空白空间)。这样它就不会更改文件大小或任何其他数据。
我在哪里做错了?