Вы можете использовать lseek(2)
bfd = open(m_file_name.c_str(), O_RDWR);
// read your file
lseek(bfd, 0, SEEK_SET);
// do whatever manipulation & write file
Если ваш файл теперь меньше по размеру, чем оригинал, вам нужно будет урезать размер до нового размера, или вы оставите байты изстарый конец файла в конце.Если он больше, файл должен увеличиваться автоматически при записи.