从字符串加载C结构

时间:2013-11-02 12:53:24

标签: c file

我的情况如下。我获得了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);  

1 个答案:

答案 0 :(得分:2)

关于fmemopen的警告是编译器找不到原型,添加

#define _GNU_SOURCE

之前包括所有标题,或者,如果使用GCC,请在选项中添加-D_GNU_SOURCE