Я не знаю ни одной такой обертки, но я не думаю, что было бы слишком сложно сделать свою собственную. Это связано с тем, что подход C к файловому вводу-выводу скрывает все за интерфейсом FILE*
, что фактически делает его красиво-ориентированным .
Поскольку вы используете C, а не C ++, я бы предложил использовать макросы препроцессора для замены каждого экземпляра fopen()
, fclose()
и fread()
на MEM_fopen()
и т. Д., Которые вы будете определять. Вам нужно будет определить свой собственный тип FILE
, для которого вы можете просто использовать следующее:
typedef unsigned char *FILE;
(Если вам нужно управлять EOF, вместо этого вам потребуется FILE
, чтобы быть struct
с дополнительным полем length
.)
Тогда ваша MEM_fread()
функция будет выглядеть примерно так:
int MEM_fread(unsigned char *buf, size_t size, size_t n, FILE *f) {
memcpy(buf, *f, size * n);
*f += size * n;
return n;
}
Возможно, сигнатуру для «конструктора» MEM_fopen()
нужно будет немного изменить, поскольку нужный вам идентификатор теперь является адресом памяти, а не именем файла.