私のプログラムでは、すでに閉じているファイルを閉じることがあります。fclose既に閉じているファイルに対してを実行するとどうなりますか?
それができない場合、ファイルが閉じているか開いているかを知る方法はありますか?
同じストリームで 2 回呼び出すfcloseことは、未定義の動作です。おそらくクラッシュします。FILE*が既に閉じられているかどうかを確認する方法はないため、安全な解決策は、閉じられたらすぐにポインターを NULL に設定することです。
fclose(fh);
fh = NULL;
出典: 「FILE オブジェクトへのポインタの値は、関連付けられたファイルが閉じられた後は不確定です」(C ドラフト標準)。「fclose() の呼び出し後、ストリームを使用すると、未定義の動作が発生します。」(Single UNIX ® 仕様)。