Как сделать так, чтобы библиотека, которая записывает в FILE *, записывала данные в память?(C программирование) - PullRequest
1 голос
/ 26 июля 2010

Я столкнулся с проблемой, когда библиотека C предоставляет только интерфейс, который записывает данные в структуру C FILE.Это означает, что все данные сохраняются на диск.Я хочу, чтобы эта библиотека вместо этого сохраняла данные в памяти.

Есть ли способ эмулировать структуру FILE в моем коде и вместо этого сохранить данные в памяти?Я полагаю, что FILE имеет различные указатели на функции, и я мог бы написать свои собственные функции и заставить их выделять память и fwrite записывать данные в память.

Можно ли это сделать?Спасибо, Бода Кидо.

Ответы [ 3 ]

4 голосов
/ 26 июля 2010

Переносимым решением было бы использовать fmemopen или open_memstream, если эти функции доступны (они долгое время были частью GNU libc и были добавлены в POSIX в 2008 году) и просто записывать во временную затем файл будет считан обратно в память, если это не так.

2 голосов
/ 26 июля 2010

Вы можете взглянуть на fmemopen.

1 голос
/ 26 июля 2010

В системе UNIX вы можете использовать fdopen(3), чтобы получить FILE*, который использует ранее открытый поток.Тогда все, что вам нужно сделать, это написать код для чтения с другой стороны этого канала и поместить его в память.

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