qq_45050768 2019-12-13 14:55 采纳率: 0%
浏览 292

运行之后为何显示打开文件错误

#include
#include
#include
#include
static int t;
int a[100];
extern startf();/*外部说明*/
extern menu();/*外部说明*/
extern TC();/*外部说明*/
extern GZ();/*外部说明*/
//学生基本信息保存模块
void Save(int x)
{
FILE *fp;
int i;
a[t]=x;
t++;
fp=fopen("c:\youxi.txt","w+");
for(i=0;i {
fwrite(&a[i],sizeof(int),1,fp);
//每次写一个条录入或一个结构体数组至文件
}
if(i>0)
{

printf("\n完成%d个文件的保存\n",t);
system("pause");
}
else
{
system("cls");
printf("\n文件为空,没有保存一个文件\n");
system("pause");
}
fclose(fp);//关闭文件
}
//显示模块
void display()
{
int i;
for(i=0;i<t;i++)
{
printf("\n\t\t\t\t%d",a[i]);
printf("\n");
}
if(t==0)
printf("没有分数");
system("pause");
system("cls");
}
void main()/*主函数*/
{
int count=0;
FILE *fp;
fp=fopen("c:\youxi.txt","a+");//保存在c:youxi.txt,以读写创建一个新的

if(fp==NULL)//打开头文件失败
{
printf("\n文件打开错误!\n");
exit(0);
}
while(!feof(fp))
{
if(fread(&a[count],sizeof(int),1,fp)==1) //一次从文件中读取一条学生信息
count++;
}
menu();
}
int menu()/*菜单模块*/
{
int k;
printf("\n\n\n\n\t\t ...................猜数字游戏..................\n");
printf("\t\t|***********************************************|\n");
printf("\t\t|***************==> <==**************|\n");
printf("\t\t|***************==> 1.开 始 <==**************|\n");
printf("\t\t|***************==> <==**************|\n");
printf("\t\t|***************==> 2.退出系统 <==**************|\n");
printf("\t\t|***************==> <==**************|\n");
printf("\t\t|***************==> 3.游戏说明 <==**************|\n");
printf("\t\t|***************==> <==**************|\n");
printf("\t\t|***************==> 4.显示分数 <==**************|\n");
printf("\t\t|***************==> <==**************|\n");
printf("\t\t|***********************************************|\n");
printf("\t\t|...............................................|\n");
printf("\n\n\n\n");

printf("\t\t请按提示输入:");
scanf("%d",&k);
switch(k) /*选择项*/
{
case 1:
{
system("cls");
startf();
};break;
case 2:
{
system("cls");
break;
};break;
case 3:
{ system("cls");
return GZ();
}
case 4:
{
system("cls");
display();
system("pause");
return menu();
}
default:
{
printf("\t\t您的输入有误,请重新输入~\n");
system("pause");
system("cls");

return menu();
}
}
}
int startf( )/*游戏模块*/
{
int n,m=0,g,s,b,q,cs,C=0,f;//**cs表示测试数据**//
do
{
printf("是否自定义数值:1/0 (1:是 /0:否)\n");
scanf("%d",&f);
switch(f)
{
case 0:
srand((int)time(0));/*随机数据的产生*/
n=1+(int)(10000.1*rand()/(RAND_MAX+1.0));break;
default:
printf("你输入有误,请重新输入~~");
system("pause");
case 1:printf("请输入你要自定义的数据\n");
scanf("%d",&n);break;
}
g=n%10;
s=n%100/10;
b=n/100%10;
if(n q=0;
}
while((g==s)||(g==b)||(g==q)||(s==b)||(s==q)||(b==q)||(n=10000))
;/*随机数据的产生*/
int a[4]={q,b,s,g};/*将随机数据重组*/

system("cls");
printf("欢迎进入猜数字游戏...\n\n");
printf("\t\t.......A:数字正确,且位置正确 .......\n");/*温馨提示*/
printf("\t\t.......B:数字正确,但位置错误 .......\n");
printf("\t\t.......m:实验次数 .......\n\n");
do
{
int c;
printf("请输入四个0到9之间的数字,且不重复,如:1234\n");
scanf("%d",&cs);/*判断随机数据是否合格*/
int g1,s1,b1,q1,A=0,B=0;
g1=cs%10;///**拆分测试数据**//
s1=cs%100/10;
b1=cs/100%10;
{
if(cs<1000)
q1=0;
else
q1=cs/1000;///**拆分测试数据**//
}
int p[4]={q1,b1,s1,g1},i,j;/*比较各位数是否相等*/
if (cs==n)//游戏区//
break;
{
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(p[i]==a[j])
if(i==j)
A++;
else
B++;

m++;
system ("cls");
printf("\t\t\t%dA%dB,m=%d",A,B,m);
printf("\n");
printf("\n");
}
}
while(m<8);//游戏区//
{
if(m<8||cs==n)//游戏得分情况//
{
switch(m)
{
case 1: system("cls");
printf("\t\t\t\tscore:90\n\t\t\t\t游戏过关!!!\n");Save(90);break;
case 2: system("cls");
printf("\t\t\t\tscore:80\n\t\t\t\t游戏过关!!!\n");Save(80);break;
case 3: system("cls");
printf("\t\t\t\tscore:70\n\t\t\t\t游戏过关!!!\n");Save(70);break;
case 4: system("cls");
printf("\t\t\t\tscore:60\n\t\t\t\t游戏过关!!!\n");Save(60);break;
case 5: system("cls");
printf("\t\t\t\tscore:50\n\t\t\t\t游戏过关!!!\n");Save(50);break;
case 6: system("cls");
printf("\t\t\t\tscore:40\n\t\t\t\t游戏过关!!!\n");Save(40);break;

case 7: system("cls");
printf("\t\t\t\tscore:30\n\t\t\t\t游戏过关!!!\n");Save(30);break;
default:
system("cls");
printf("\t\t\t\t一次通关 YOU ARE DOOG!!!\n\t\t\t\tscore:100\t\t\t\t\n");
Save(100);
}
}
else
printf("\t很遗憾游戏结束了,你可以选择继续重新开始\n");//判断胜利与否//
}
system("pause");
system("cls");
return TC();
}
int TC()/*提示模块*/
{
int h;
printf("\n\n\n\n\n\n\n");
printf("\t\t|***************************************************|\n");
printf("\t\t|***************==> <==******************|\n");
printf("\t\t|***************==> 1.继 续 <==******************|\n");
printf("\t\t|***************==> <==******************|\n");
printf("\t\t|***************==> 2.游戏退出 <==******************|\n");
printf("\t\t|***************==> <==******************|\n");
printf("\t\t|***************************************************|\n");
printf("\t\t|...................................................|\n");
printf("\n\n\n\n");

printf("\t\t请按提示输入:");
scanf("%d",&h);
switch(h)
{
case 1:
{
system("cls");
menu();
};break;
case 2:
{
system("cls");
break;
};break;
default:
{
system("cls");
printf("您的输入有误,请重新输入~");
return menu();
}
}
}
int GZ()/*说明模块*/
{
printf("\n\n\n\n\t\t..................游戏规则................\n\n");
printf("\t\t 该游戏可以由程序随机产生或者自定义四个\n\n");
printf("\t\t 0到9之间的数字,且不重复。玩游戏者通过\n\n");
printf("\t\t 游戏提示输入八次来匹配上面所输入的数字。\n\n");
printf("\t\t A表示位置正确且数字正确,\n\n");
printf("\t\t B表示数字正确而位置错误,\t\n\n");
printf("\t\t m表示实验的次数。\t\n\n");

printf("\t\t..........................................\n\n\n\n");
system("pause");
system("cls");
return menu();
}

  • 写回答

1条回答 默认 最新

  • fan1983ace 2019-12-13 17:30
    关注

    main()函数中,menu(); 前加fclose(fp);

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置