Как перезаписать X байтов по смещению Y с помощью fwrite()?

Все, что я могу найти, используя fopen() и fwrite() в C, это удалить все содержимое и начать запись снова или добавить в конец файла. Что делать, если мне нужно перейти к какому-то смещению в файле и перезаписать несколько байтов?

Это возможно с какой-то функцией?


person rfgamaral    schedule 12.04.2010    source источник


Ответы (1)


Вы можете открыть файл с параметром "rb+", а затем использовать fseek с SEEK_SET, чтобы перейти в определенное место. Therb+ открывает его как для чтения, так и для записи в виде двоичного файла (файл должен существовать для его успешного выполнения - он не создаст новый файл).

person Mark Wilkins    schedule 12.04.2010
comment
Это перезапишет только нужные мне байты и не добавит? - person rfgamaral; 12.04.2010
comment
Вопрос в том, удалит ли он оставшуюся часть файла помимо того, что вы написали? - person Joe Koberg; 12.04.2010
comment
@Nazgulled: Да - SEEK_SET позиционируется на определенное смещение в байтах в файле. SEEK_CUR также можно использовать для поиска смещения от текущего местоположения. - person Mark Wilkins; 12.04.2010
comment
@Joe: Нет, остальные данные останутся без изменений. - person Mark Wilkins; 12.04.2010