Fclose已经fclose的文件

时间:2014-07-03 14:08:31

标签: c++ c fclose

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

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

1 个答案:

答案 0 :(得分:16)

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

fclose(fh);
fh = NULL;

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