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返回值表示文件未打开.您没有关闭尚未打开的内容.简单.