Mat*_*ski 2 c file-io fopen file 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);
Run Code Online (Sandbox Code Playgroud)
如果fopen()无法打开文件,我还应该打电话fclose()吗?
不,你不需要调用fclose()内部if块.一旦fopen()失败,它将重新运行NULL,无需关闭.
详细说明,如果fopen()是成功,它将返回一个FILE *.这需要关闭.FWIW,在这种情况下返回的指针,具有任何值,保证比较不等于NULL.换句话说,如果fopen()是成功的,返回的指针总是会失败的if(!fp)检查.
在错误情形中(当由于某种原因无法选择文件时),将重新使用NULL.NULL返回值表示文件未打开.您没有关闭尚未打开的内容.简单.