问题代码
原代码通过file以fprintf写入文件,运行500次 必崩溃。
问题解析
C运行时库对于任何时候可以打开的文件数量有512个限制。尝试打开超过最大数量的文件描述符或文件流会导致程序失败。使用fopen时,但凡含r字母的打开方式,一定要加判断,文件是否打开成功,否则程序不会报告错误,会运行下去。
目前处理方法有2种:一种是用fcloseall()函数把所有的流文件都关闭,这个可能会引起程序正在使用的其它流文件也关了,导致问题,需要根据实际使用情况来处理;还有一种就是判断下文件是否存在,不存在则添加标题头,并写入数据,存在的话,直接写入数据。
这里贴个简单处理方式: