如果发生错误,我应该fclose(文件)吗?

时间:2015-05-29 16:14:50

标签: c file file-io fopen fclose

代码:

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()

1 个答案:

答案 0 :(得分:6)

不,您无需在{#- #}blablabla {# -#} blablabla {# -#} blablabla {# -#} blablabla {# -#} blablabla{# -#} 块内调用fclose()。一旦if失败,它就会重新运行NULL,而不需要关闭

详细说明,如果fopen()成功,它将返回fopen()。这需要关闭。 FWIW,在这种情况下返回的指针,是,保证比较不等于NULL。换句话说,如果FILE *成功,则返回的指针将始终 FAIL fopen()检查。

在错误情形中(当无法为某些原因选择文件时),将重新启动NULL。 NULL返回值表示文件打开。您没有关闭尚未打开的内容。简单。