открыть с помощью O_RDWR - как перезаписать? - PullRequest
0 голосов
/ 18 октября 2011

Я хочу прочитать файл, изменить его содержимое и записать его обратно в файл.

Я использую open, чтобы прочитать файл следующим образом:

bfd = open(m_file_name.c_str(), O_RDWR)

Но когда я пишу, это как бы добавляет его к старому. Как я могу перезаписать это?

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Вы можете использовать lseek(2)

bfd = open(m_file_name.c_str(), O_RDWR);
// read your file
lseek(bfd, 0, SEEK_SET);
// do whatever manipulation & write file

Если ваш файл теперь меньше по размеру, чем оригинал, вам нужно будет урезать размер до нового размера, или вы оставите байты изстарый конец файла в конце.Если он больше, файл должен увеличиваться автоматически при записи.

0 голосов
/ 18 октября 2011

Вам нужно искать с lseek, если вы хотите написать в определенной позиции.

Вы не пытаетесь перезаписать весь файл, верно?Просто небольшая часть этого?Если вы пытаетесь перезаписать весь файл, это плохой способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...