FILE *fp = fopen(filename, "r");
if (!fp)
{
fprintf(stderr, "Failed to open a file\n");
// fclose(fp) <-- should I close file here?
exit(1);
}
// Some operations on the file.
fclose(fp);
如果fopen()
无法打开文件,我是否仍应拨打fclose()
?
答案 0 :(得分:6)
不,您无需在{#- #}blablabla {# -#}
blablabla {# -#}
blablabla {# -#}
blablabla {# -#}
blablabla{# -#}
块内调用fclose()
。一旦if
失败,它就会重新运行NULL,而不需要关闭。
详细说明,如果fopen()
成功,它将返回fopen()
。这需要关闭。 FWIW,在这种情况下返回的指针,是值,保证比较不等于NULL。换句话说,如果FILE *
成功,则返回的指针将始终 FAIL fopen()
检查。
在错误情形中(当无法为某些原因选择文件时),将重新启动NULL。 NULL返回值表示文件不打开。您没有关闭尚未打开的内容。简单。