assertion错误又叫断言错误:
即你认为一定发生的事情却没有发生。
此处是一个跟fclose有关的断言错误
那么,什么时候,会发生fclose断言呢?
发生该错误是,fclose执行出问题了,那么,fclose什么时间会出问题呢?一种情况是,要关闭的文件根本就没有打开,这种情况最常见在于在if(fp!=NUL)中做了文件成功打开的事情,但是,却在if外面进行fclose()。显然,当if()条件不成立的时候,文件并没有打开,而fclose却要执行,这样就会发生错误!(其他情况若有发现再补充)。
为了防止上述情况,应该怎样做呢?
首先,要养成良好的编码习惯,对于有可能出错的地方,一定要进行错误校验,如在fopen之后一定要加一句if(fp ==NULL),处理文件打开错误;另外,在程序逻辑太过复杂,掌握不好fclose该放的地方时,可以将fclose放在程序能够退出执行的地方,但是,一定要在fclose前加一句if (fp!= NULL)进行判断。