fopen==NULL的问题

使用fopen时一定注意,特别是在打开多个文件的情况下,每次的fopen使用要紧跟fclose

	FILE * fp;
	char msg[100];

	if ((fp = fopen(ReadCfg_Path_Bind, "rb")) == NULL) {

		fp = NULL;//需要注意
		fp = fopen(ReadCfg_Path_Bind, "w");  //创建文件
		if (NULL == fp)
			MessageBoxA(NULL, "权限出现问题,请以管理员方式运行。", "1", NULL);

		fp = NULL;//需要指向空,否则会指向原打开文件地址 
		if (fp != NULL)
			fclose(fp);
	}
	//释放文件
	if (fp != NULL)
	{
		fclose(fp);
		fp = NULL;
	}

	if ((fp = fopen(ReadCfg_Path_Core, "rb")) == NULL) {
	
		fp = NULL;//需要注意
		fp = fopen(ReadCfg_Path_Core, "w");  //创建文件
		if (NULL == fp)
			MessageBoxA(NULL, "权限出现问题,请以管理员方式运行。", "2", NULL);

		fp = NULL;//需要指向空,否则会指向原打开文件地址 

		if (fp != NULL)
			fclose(fp);
	}
	//释放文件
	if (fp != NULL)
	{
		fclose(fp);
		fp = NULL;
	}

每次的释放文件是必须的,虽然不用重新使用File对象
经过试验在fopen调用一千次而一次fclose都不调用的情况下,调用fopen就会返回NULL值,所以这两个函数必须成对使用
如果是要循环调用fopen就必须和fclose成对使用


版权声明:本文为hu421160052原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。