Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在我的程序中,我可能会关闭一个已经关闭的文件。当我fclose对已经关闭的文件执行 a 时会发生什么?
fclose
如果你不能这样做,如何知道文件是关闭还是打开?
使用相同的流调用fclose两次是未定义的行为 - 很可能会崩溃。没有办法检查是否FILE*已经关闭,因此安全的解决方案是在指针关闭后立即将指针设置为 NULL:
FILE*
fclose(fh); fh = NULL;
来源:“在关联文件关闭后,指向 FILE 对象的指针的值是不确定的”(C 草案标准)。“在调用 fclose() 之后,对流的任何使用都会导致未定义的行为。” (单一 UNIX® 规范)。