Fclose已经fclose的文件

Eva*_*eil 5 c c++ fclose

在我的程序中,我可能会关闭一个已经关闭的文件.当我fclose对已经关闭的文件执行操作时会发生什么?

如果你不能这样做,如何知道文件是关闭还是打开?

Woj*_*wka 16

fclose使用相同的流调用两次是未定义的行为 - 很可能是崩溃.无法检查是否FILE*已经关闭,因此安全的解决方案是在关闭时将指针设置为NULL:

fclose(fh);
fh = NULL;
Run Code Online (Sandbox Code Playgroud)

来源:"在关联文件关闭后,指向FILE对象的指针的值是不确定的"(C草案标准)."在调用fclose()之后,对流的任何使用都会导致未定义的行为." (SingleUNIX®规范).