2014-01-09 48 views
0

我目前正在製作圖像處理程序,它進行得非常好,但突然出現了一些fopen()錯誤。在我以前的版本中(沒有動態分配的數組,沒有結構)沒關係,在fopen(name, "a")中使用了char name[50],它運行良好,但現在我無法使它工作。無論我扔在fopen(),它都不會編譯。下面是完整的錯誤描述:C fopen()錯誤:從類型'struct FILE *'分配類型'FILE'時的不兼容類型

obsluga.c:30:8: error: incompatible types when assigning to type ‘FILE’ from type ‘struct FILE *’ plik2=fopen(name, "a");

代碼片段(我可以張貼以上,但它應該是不相關的)

char name[50]; 
plik2=fopen(name, "a"); 

我真正想要的是通過包含在char *outputfopen()文件名是在適當的結構,但可悲的是,即使是最簡單的方法現在也不行。

+4

看起來'plik2'的類型是'FILE'而不是'FILE *' –

+0

提供了一個完整但很小的例子。 –

+2

你究竟是如何得出結論認爲plik2的聲明是無關緊要的? –

回答

2

要得到的錯誤,你必須有書面的東西,如:

FILE plik2; 

而不是正確的:

FILE *plik2; 

款待FILE *作爲一個不透明的類型。你總是寫FILE *(幾乎總是;有時候,你可能會使用FILE **)並且從不寫FILE

+0

你的意思是「將'FILE'視爲不透明類型」? –

+1

其中之一或兩者;不要在'FILE *'指向什麼內部戳;無處不在使用'FILE *';不要使用'FILE'。我想我的意思是'使用'FILE *'作爲類型'(省略討論中的不透明)。我不相信我的用法是錯誤的;你的選擇不會是錯的。 –

+2

@KeithThompson可能將* *都視爲不透明。永遠不要取消引用'FILE *',例如... – Roddy

相關問題