c-如果发生错误,我应该关闭(文件)吗



代码:

FILE *fp = fopen(filename, "r");
if (!fp)
{
    fprintf(stderr, "Failed to open a filen");
    // fclose(fp) <-- should I close file here?
    exit(1);
}
// Some operations on the file.
fclose(fp);

问题:

如果fopen()无法打开文件,我还应该调用fclose()吗?

不,您不需要在if块内调用fclose()。一旦fopen()失败,它将重新运行NULL,而不需要关闭

更详细地说,如果fopen()成功,它将返回一个FILE *。这需要关闭。FWIW,在这种情况下返回的指针,无论值为,都保证与NULL进行比较。换句话说,如果fopen()成功,则返回的指针将始终FAILif(!fp)检查。

在错误情况下(当由于某些原因而无法操作文件时(,将重试NULL。NULL返回值意味着文件打开。您不能关闭尚未打开的内容。易于理解的

相关内容

  • 没有找到相关文章

最新更新