2013-11-02 143 views
0

我的情况如下。我获得FILE *指针。我知道它可以指向不支持seek的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如下:

fread(&var_of_type_love_struct_t, sizeof(love_struct_t), 1, myfile); 
+1

看看fmemopen的man page,它会告诉你一些#defines。假设你的系统有它。在任何情况下,'memcpy'与fmemopen中的fread是一样的。 – bmargulies

+2

你的问题一直在描述一个'FILE *',但你不会显示你的'fopen'调用。 **发布更多代码** – abelenky

回答

2

警告有关fmemopen是编译器没有找到原型,前加

#define _GNU_SOURCE 

包括所有的标题,或,如果使用GCC,请将-D_GNU_SOURCE添加到选项中。