Я пытаюсь записать в новый файл с режимом 'wb' с заданным смещением, используя функцию owrite, указанную ниже, но каждый раз, когда он перезаписывает все байты до смещения.
Использование windows 10, visual studio 2019 16.0.3.
Смещение - это положительное число и внешние границы файла (поскольку это новый файл).
count == 64000 == размер буфера.
Я пытался использовать lseek / _lseek write / _write (с fileno), но в итоге получил похожий результат. owrite не возвращает -1, также проверил вывод fwrite, и все выглядит нормально. Как правильно выполнить эту операцию?
int owrite(FILE* fd, char* buf, size_t count, int offset)
{
if (fseek(fd, offset, SEEK_SET) != 0) {
return -1;
}
fwrite((char*)buf, sizeof(char), count, fd);
fseek(fd, 0, SEEK_SET);
return 0;
}
Также здесь есть функция, которая вызывает owrite:
void insert_chunk(byte* buffer, int len, char* filename, long offset)
{
FILE* builded_file = fopen(filename, "wb");
owrite(builded_file, buffer, len, offset);
fclose(builded_file);
}
//byte is unsigned char