爲了讓測試具體功能更簡潔,我想對fclose
函數執行測試。但是在嘗試寫入和重新讀取位圖圖像時遇到了問題。問題測試fclose返回值
assert(fclose(bmp_image) != EOF);
雖然下面的代碼不會給出任何錯誤:
其實,我測試的時候fclose
這種方式有一個bug發生的歷史
int closing_ok = fclose(bmp_image);
assert(closing_ok != EOF);
有了更多的測試,我看到這個差異僅在寫入模式下發生,但不在讀取模式下發生。這種差異是否正常?有人能解釋我這種差異嗎?
編輯: 我試圖讓錯誤與代碼含義:
if(fclose(output_file) != EOF) {
printf("ERROR: %s\n", strerror(errno));
}
但也正是在這裏很好,沒有錯誤。
問題是什麼是什麼呢?它沒有被調用嗎? – StoryTeller
@StoryTeller我想是的。它可能無法正常關閉文件... 這不是一個大問題,我只是不明白這種行爲。 – baptiste
你在if(fclose(output_file)!= EOF)中的測試應該是'if(fclose(output_file)== EOF)'來打印錯誤原因。 – Gerhardh