如果发生错误,我应该 fclose(file) 吗?
Should I fclose(file) if an error occured?
代码:
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()
吗?
不,您不需要在 if
块内调用 fclose()
。一旦 fopen()
失败,它会重新运行 NULL 不需要 closed.
详细说一下,如果fopen()
成功,会return一个FILE *
。那需要关闭。 FWIW,在这种情况下,returned 指针是任何 value,保证与 NULL 进行比较不相等。换句话说,如果 fopen()
成功,returned 指针将始终 FAIL if(!fp)
检查。
在错误情况下(当由于某些原因无法打开文件时),将返回NULL。 NULL return 值表示文件 未 打开。您不会关闭尚未打开的内容。简单。
代码:
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()
吗?
不,您不需要在 if
块内调用 fclose()
。一旦 fopen()
失败,它会重新运行 NULL 不需要 closed.
详细说一下,如果fopen()
成功,会return一个FILE *
。那需要关闭。 FWIW,在这种情况下,returned 指针是任何 value,保证与 NULL 进行比较不相等。换句话说,如果 fopen()
成功,returned 指针将始终 FAIL if(!fp)
检查。
在错误情况下(当由于某些原因无法打开文件时),将返回NULL。 NULL return 值表示文件 未 打开。您不会关闭尚未打开的内容。简单。