Функция fmemopen() позволяет открыть набор байт как файл, и получить обычный файловый дескриптор, что позволяет работать с набором байт как с файлом обычными файловыми функциями чтения и записи.
Пример использования
#include <stdio.h>
#include <string.h>
static char buffer[] = "foobar";
int main (void)
{
int ch;
FILE *stream;
stream = fmemopen(buffer, strlen (buffer), "r");
if (stream == NULL)
/* handle error */;
while ((ch = fgetc(stream)) != EOF)
printf("Got %c\n", ch);
fclose(stream);
return (0);
}
Внимание! Реализация этой функции сделана только в GNU C. В других версиях C этой реализации нет. Для эмуляции данной функции можно использовать следующий код
FILE *fmemopen (void *buf, size_t size, const char *opentype)
{
FILE *f;
assert(strcmp(opentype, "r") == 0);
f = tmpfile();
fwrite(buf, 1, size, f);
rewind(f);
return f;
}
эта эмулирующая функция просто создает временный файл на диске, и возвращает его дескриптор.