我需要从文件开头擦除或覆盖(最好擦除)多个字节。首先将内容读入数据结构,然后再写入删除的新内容。
目前,我有读写部分。我该如何清除数据?询问您是否想知道其他事情。谢谢,对不起,英语不好:)
typedef struct header {
char version[5]; //Offset 0, length 5, Archiver version
int files_no; //Offset 5, length 8, Number of files in the archive
char desc[256]; //Offset 13, length 256, Archive description, Header size 296??
header() {
strcpy(version, "0.20");
strcpy(desc, "THIS IS A DESCRIPTION FIELD WITH 256BYTE!");
}
}archiveHeader;
int archive(char *argv[], int argc) {
archiveHeader archive_struct_write, archive_struct_read;
string output = argv[argc-1]; output += ".n0b"; //Name of file to modify
int write_counter = 1;
ofstream file_write(output.c_str(), ios::binary | ios::app);
file_write.seekp(0, file_write.beg);
ifstream file_read(output.c_str(), ios::binary);
file_read.read((char*)&archive_struct_read, sizeof(archive_struct_read)); //Read existing beginning data
//Steps for erasing the read stuff goes here.
write_counter = archive_struct_read.files_no;
archive_struct_write.files_no = write_counter + 1;
file_write.write((char*)&archive_struct_write, sizeof(archive_struct_write)); //New beginning data written
file_read.close();
file_write.close();
write_counter++;
return 0;
}
编辑:不能选择在开始字节之后缓冲所有内容并写入新文件,该文件的大小最高可达到GB。谢谢!