fclose()函数不可用问题出现错误怎么解决



fclose()函数不可用问题出现错误怎么解决,fclose()函数使用实例。以下书出错的程序代码:

a1.c:
void main()
{
char selrun;
FILE *p;
do
{
system(“cls”);
printf(“请选择操作:\na:进行文件操作;\nb:进行记录操作;\n\
c:进行预测评估;\nd:显示查询;\ne:退出程序。\n请选择:”);
fflush(stdin);
//selrun=getchar();
scanf(“%c”,&selrun);
switch(selrun)
{
case ‘a’:   //文件操作
p=filesel();   //vc6.0引用外部函数可不做声明?
break;
case ‘b’:    //记录操作
break;
case ‘c’:    //预测评估
break;
case ‘d’:    //显示查询
break;
case ‘e’:    //退出程序
printf(“谢谢使用,再见!\n”);
exit(SUCCESS);
default:
{
printf(“选择无效,请重新选择:\n”);
}
}

}
while(1);

}

a2.c:
#include <stdio.h>
#include <stdlib.h>

FILE * filesel()
{
char selrun,filename[20];
FILE *p=NULL;
do
{


system(“cls”);
printf(“请选择操作:\na:创建新文件;\nb:打开一个文件;\n\
c:删除一个文件;\nd:返回上级。\n请选择:”);
selrun=getch();
fflush(stdin);
switch(selrun)
{
case ‘a’:   //文件创建
printf(“请输入文件名:\n”);
gets(filename);
if(p=fopen(filename,”ab”)!=NULL)
{
printf(“创建文件成功!\n”);
if(fclose(p)!=0)
printf(“文件关闭失败!”);
else
printf(“文件关闭成功!”);
}
else
printf(“创建文件失败!\n”);
getch();
break;
case ‘b’:    //打开文件
printf(“打开文件成功\n”);
getch();
break;
case ‘c’:    //删除文件
printf(“删除文件成功\n”);
getch();
break;

case ‘d’:    //返加上级操作
return p;

default:
{
printf(“选择无效,请重新选择:\n”);
}
}

}
while(1);
}

其实解决问题的方法很简单:

if((p=fopen(filename,”ab”))!=NULL);/* 这里少加个括号 */