переписать часть двоичного файла

0

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

Как я могу сделать это правильно?

Вот код:

FILE* f = _tfopen(fileName, _T("wb"));
if( f != NULL )
{
        uint64 headerSize = 8;
        char arr[2*3*3]; //w=3 h=2  RGB
        memset(arr,100,2*3*3);
        _fseeki64(f, headerSize, SEEK_SET);
        fwrite(arr,sizeof(char),sizeof(arr),f);
        fclose(f);
}
  • 1
    Почему это помечено C ++?
  • 0
    @cHao Я использую этот код из C ++.
Теги:
file
fwrite
fseek

1 ответ

4
Лучший ответ

Я думаю, вам нужно изменить режим open из вашего файла с "wb" на "r+b"

от cplusplus.com:

"w" write: Create an empty file for output operations. If a file with the same name already exists, its contents are discarded and the file is treated as a new empty file.

  • 2
    w+ в той же таблице указывает, что это неправильный выбор (то есть, что файл все равно будет обрезан). Похоже, это должно быть r+b .
  • 0
    @cHao ты прав, спасибо,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню