如果文件指针为null,我是否必须使用fclose()?(C)

Pab*_*ino 7 c

当我在C中打开文件时,我目前正在这样做:

int main()
{
   FILE *f
   f = fopen("employers.dat", "rb");
   if(f == NULL)
   {
       PUTS("can not open the file:\"employers.dat\"");
       fclose(f);
       exit(-1);
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

fclose指针是否必须使用NULL

Mik*_*kis 14

它不仅是没有必要使用fclose()fNULL,但你实际上应该调用fclose()fNULL.

  1. 如果fNULL,那么该文件从未打开过,所以它不需要任何关闭.

  2. 即使文件在某种程度上需要关闭,该解决方案不可能涉及传球NULLfclose(),因为一个NULL参数进行绝对没有信息fclose()可以用来找出关闭该文件.

  3. 我不确定是否fclose()包含用于检测和忽略NULL传递给它的错误参数的额外代码,但即使这样做,最好不要诱惑你的命运.

  • fclose() NULL 指针是未定义的行为,如果您这样做,常见的实现只会使程序崩溃。 (3认同)