Моя ситуация следующая. Я получаю указатель FILE *. Я знаю, что это может указывать на тип FILE, который не поддерживает поиск (может быть PIPE). Поэтому, чтобы облегчить ситуацию, я подумал о загрузке частей файла в память в виде строкового буфера.Загрузка структуры C из строки
Проблема в том, что мой файл содержит рядом с некоторыми другими элементами структуры C, которые мне нужно загрузить в память. И до сих пор все, что я пробовал, потерпело неудачу.
Наиболее перспективным казалось fmemopen, но когда я добавил его в свой код я получил
warning: implicit declaration of function ‘fmemopen’ [-Wimplicit-function-declaration]
stream = fmemopen (buffer, p_header.bytes, "r");
предупреждение и что, конечно, ничего я хочу. Он оставался неявным, хотя я добавил stdio.h include.
Можно ли что-либо сделать по этому поводу? Могу ли я каким-то образом создать что-то типа FILE * в памяти, чтобы я мог называть его? Или есть способ, как читать структуру из строки?
Я использовал Fread следующим образом:
fread(&var_of_type_love_struct_t, sizeof(love_struct_t), 1, myfile);
Посмотрите на страницу man для fmemopen, она расскажет вам о некоторых #defines. Предполагая, что ваша система даже имеет его. В любом случае «memcpy» - это то же самое, что и fread from fmemopen. – bmargulies
Ваш вопрос продолжает описывать 'FILE *', но вы не показываете свой вызов 'fopen'. ** Опубликовать больше кода ** – abelenky