Мне нужно стереть или перезаписать (лучше было бы стереть) количество байтов с начала файла. Содержимое сначала считывается в структуру данных после записи нового содержимого.
В настоящее время у меня есть часть для чтения и письма. Как я могу сделать часть очистки данных? Спросите, хотите ли вы узнать что-нибудь еще. Спасибо, извините за плохой английский:)
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;
}
Редактировать: Буферизация всего после начальных байтов и запись в новый файл не вариант, размер файла может варьироваться до ГБ. Спасибо!