2012-01-25 68 views
0

我有一個錯誤,我不知道...我試圖打開文件要麼寫或讀,並檢查是否開放成功。但我得到這個編譯錯誤...我不知道爲什麼;;;;fopen C,聲明無效?

FILE * infile; 
.... 
infile = fopen(filename, "w"); 
if(!infile) 
    return NULL; 

,這讓我這個錯誤

warning: statement with no effect 
error: expected ';' before 'return' 

這不是以前肯定搞砸了分號,因爲如果我刪除代碼一切的那部分工作正常。感謝您的幫助!

+4

在這裏或代碼中調用'foepn()'錯字嗎? –

+0

正如Dan Fego先前的評論所暗示的那樣,請確保您在實際代碼中調用了函數fopen而不是foepn。 – aardvarkk

+0

哎呀這是這裏的錯字 –

回答

0

有些事情要檢查:

  • 已包含stdio.h之外?
  • 這個函數應該返回一個值嗎?
  • 是否實際定義了NULL? (嘗試返回0)

哪一行報告警告?這是否是您發佈的其中一條線?

+0

if(!infile)返回NULL;行是報告警告和錯誤NULL定義,如果我評論該行一切正常,功能只包含那些行 –

+0

函數只包含那些行?當然有一些代碼使用'infile'?這裏需要更多的上下文。 –

3

幾乎可以肯定,問題是你下意識地看不到的問題,以至於當你將代碼複製到上面的消息時,你會自動糾正它。該錯誤消息說,你必須立即;一個return之前,這意味着你的實際代碼幾乎可以肯定

if(!infile); 
    return NULL; 

和警告,告訴您if是沒有意義的,因爲事實上這種說法是守着是空的(if行末尾的;),並且無條件執行退貨。

+0

錯誤消息表示**期望**'';''返回前''。這與'if(!infile);'不匹配。 –

+0

@Daniel - 同樣可能錯誤消息被錯誤地複製。如果沒有OP使用的實際代碼,我們所能做的就是猜測出了什麼問題。 –

+0

如果我有'if(condition);',我的gcc會警告「在if語句中,在空的身體周圍建議大括號」,所以我會考慮這種可能性較小。但絕對是一種可能性。來自OP的合作確實會有所幫助。 –