例如:
FILE* file_name;
file_name = fopen("some.txt", "r"); // some.txt isn't exist
if (file_name !=NULL)
printf("nice");
fclose(file_name);
fclose
年后会发生什么?
例如:
FILE* file_name;
file_name = fopen("some.txt", "r"); // some.txt isn't exist
if (file_name !=NULL)
printf("nice");
fclose(file_name);
fclose
年后会发生什么?
将NULL
指针传递给fclose
会触发未定义的行为.
fclose
函数在C standard的第7.21.5.1节中记录为库函数,第7.1.4p1节规定了以下有关库函数的内容:
除非明确说明,否则以下各项声明均适用 否则,在下面的详细描述中:If an argument to a function has an invalid value(例如域之外的值 函数或程序地址空间之外的指针, or a null pointer,或指向不可修改存储的指针. 对应的参数不是常量限定的)或类型(在 提升)不是具有可变数目的函数所期望的 辩论,the behavior is undefined.
第7.21.5.1节没有明确提到将NULL
指针传递给fclose
,所以上面的语句适用.