我的情况如下。我获得 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);
最佳答案
关于fmemopen
的警告是编译器没有找到原型(prototype),添加
#define _GNU_SOURCE
之前包括所有 header ,或者,如果使用 GCC,请将 -D_GNU_SOURCE
添加到选项中。
关于c - 从字符串加载 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742100/