我的情况如下。我获得了FILE *指针。我知道它可以指向不支持搜索的FILE类型(可以是PIPE)。因此,为了简化操作,我想到将文件的一部分作为字符串缓冲区加载到内存中。
问题是,我的文件除了其他一些东西之外还包含C结构,我需要加载到内存中。到目前为止,我所尝试的一切都失败了。
最有希望的似乎是fmemopen,但当我把它添加到我的代码中时,我得到了
warning: implicit declaration of function ‘fmemopen’ [-Wimplicit-function-declaration]
stream = fmemopen (buffer, p_header.bytes, "r");
警告,这当然不是我想要的。即使我添加了stdio.h include,它仍然是隐式声明的。
可以做些什么吗?我可以以某种方式在内存中创建FILE *类型的东西,所以我可以调用fread吗? 或者有没有办法从字符串中读取结构?
我使用fread如下:
fread(&var_of_type_love_struct_t, sizeof(love_struct_t), 1, myfile);
答案 0 :(得分:2)
关于fmemopen
的警告是编译器找不到原型,添加
#define _GNU_SOURCE
之前包括所有标题,或者,如果使用GCC,请在选项中添加-D_GNU_SOURCE
。