2013-11-02 56 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添加到選項中。