Запишите сжатые данные в файл, используя fwrite C++

У меня есть буфер размером 42131221 байт (42,1 МБ), который я использовал для хранения некоторых сжатых данных. Только первые 20 МБ фактически хранят сжатые данные, и я пытаюсь записать это в файл, используя fwrite:

fwrite (buffer , WHAT_GOES_HERE, buffer_length, pFile);

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

Любая идея о том, как я могу заставить это работать?


person user1686342    schedule 28.10.2015    source источник
comment
WHAT_GOES_HERE должен быть sizeof(тип буфера)   -  person Anon Mail    schedule 28.10.2015


Ответы (2)


WHAT_GOES_HERE должен быть sizeof (тип буфера). Кроме того, длина буфера должна быть количеством «типов», которые вы хотите записать в файл. Я упоминаю об этом, поскольку кажется, что вы не хотите записывать весь буфер, а только 20 МБ.

person Anon Mail    schedule 28.10.2015

fwrite работает с потоками, которые буферизованы.

write — это низкоуровневый API, основанный на файловых дескрипторах. Он не знает о буферизации.

Правило большого пальца,

Если вы хотите записать один большой буфер, используйте запись. Вы используете fwrite, если хотите писать небольшими порциями.

так, вы могли пойти для того чтобы написать здесь.

person basav    schedule 28.10.2015