0

我的情况如下。我获得 FILE * 指针。我知道它可以指向不支持搜索的文件类型(可以是 PIPE)。所以为了让事情变得更容易,我想到了将文件的一部分作为字符串缓冲区加载到内存中。

问题是,我的文件在其他一些东西旁边包含我需要加载到内存的 C 结构。到目前为止,我所尝试的一切都失败了。

最有希望的似乎是 fmemopen,但是当我将它添加到我的代码中时,我得到了

warning: implicit declaration of function ‘fmemopen’ [-Wimplicit-function-declaration]
stream = fmemopen (buffer, p_header.bytes, "r");

警告,这当然不是我想要的。即使我添加了 stdio.h 包含,它仍然是隐式声明的。

对此有什么可做的吗?我可以以某种方式在内存中创建一些 FILE * 类型的东西,以便可以调用 fread 吗?或者有没有办法从字符串中读取结构?

我使用 fread 如下:

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

1 回答 1

3

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

#define _GNU_SOURCE

包含所有标题之前,或者,如果使用 GCC,则添加-D_GNU_SOURCE到选项中。

于 2013-11-02T13:00:08.783 回答