2011-02-15 81 views
11

請考慮下面的代碼片段。當fopen失敗時需要fclose嗎?

{ 
.... 
FILE *fptr = fopen("file_that_does_not_exist","r"); 
... 
} 

這裏,如果fopen失敗,我們還需要調用fclose()進行一些清理嗎?

回答

6

其簡單的朋友,我的意思只是想象......你一定要關閉電腦,即使它不能啓動....:d

用同樣的方法你不需要 關閉一個你實際上從未打開過的文件 。

一些額外的提示:fclose僅用於釋放文件,以便它可以被其他應用程序或模塊使用,因爲它不是可共享的資源。 另外,fclose意味着您現在可以釋放您正在使用的指針,並可以將其用於任何其他文件。

2

不需要。你首先沒有打開任何東西,所以你不需要關閉它。

17

不,因爲fopen()返回0,這是一個無效的文件句柄。如果您嘗試執行此操作,fclose()甚至可能會崩潰。

1

不可以。關閉沒有打開的門。如果成功,fopen返回指向打開文件的指針,並且僅將該值傳遞給fclose纔有意義。