根据手册页fclose(3):
返回值
成功完成后返回0.否则,
EOF返回并设置全局变量errno以指示错误.在任何一种情况下fclose(),对流的任何进一步访问(包括另一次调用)都会导致未定义的行为.错误
EBADF底层文件描述符fp无效.该
fclose()函数也可能失败并设置errno为例程指定的任何错误close(2),write(2)或fflush(3).
当然fclose(NULL)应该失败,但我希望它能够errno正常返回,而不是直接通过分段故障死亡.这种行为有什么原因吗?
提前致谢.
更新:我将把我的代码放在这里(strerror()特别是我正在努力).
FILE *not_exist = NULL;
not_exist = fopen("nonexist", "r");
if(not_exist == NULL){
printError(errno);
}
if(fclose(not_exist) == EOF){
printError(errno);
}
Run Code Online (Sandbox Code Playgroud)