c语言程序设计,选择序号2的时候程序停止运行
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main();
void luru();
void chakan();
void jieyue();
void guihuan();
void chazhao();
void shanchu();
void cun()//文件
{
FILE *fp;
fp=fopen("book1.txt","wt");
if(fp==NULL)
{
printf("\n不能打开book.txt");
getch();
exit(1);
}
}
struct date
{
int year;
int month;
int day;
};
struct book//结构体写书的信息
{
char name[21];//书名
char name2[21];//作者
float money;//价格
int num;//书的编号
int many;//数量
struct date Rdate;//书的录入日期
};
struct book b[20];//结构体变量
void menu()//菜单
{
printf("=====================================\n");
printf(" 【******欢迎使用图书管理系统******】\n");
printf("‖系统菜单: ‖\n");
printf("‖1.录入新书籍(首次使用) ‖\n");
printf("‖2.查看已录入书籍 ‖\n");
printf("‖3.借阅书籍 ‖\n");
printf("‖4.归还书籍 ‖\n");
printf("‖5.删除已录入书籍 ‖\n");
printf("‖6.查找书籍 ‖\n");
printf("‖0.退出系统 ‖\n");
printf("=====================================\n");
printf("请输入序号:\n");
int a;
scanf("%d",&a);//输入序号
switch (a)//选择序号
{
case 1:luru();break;
case 2:chakan();break;
case 3:jieyue();break;
case 4:guihuan();break;
case 6:chazhao();break;
case 5:shanchu();break;
case 0:printf("按任意键退出系统!");break;
default: printf("未输入正确序号");break;
}
}
void luru()//录入函数
{ int n1,i,j,k;
int flag=0;
FILE *fp1;//存书的信息指针
fp1=fopen("book1.txt","wt");//只写
if(fp1==NULL)
{
printf("\n不能打开book1.txt");
getch();
exit(1);
}
FILE *fpi;//存下标指针
fpi=fopen("i.txt","wt");//只写
if(fpi==NULL)
{
printf("\n不能打开i.txt");
getch();
exit(1);
}
FILE *fpf;//存标识符指针
fpf=fopen("flag1.txt","wt");//只写
if(fpf==NULL)
{
printf("\n不能打开flag1.txt");
getch();
exit(1);
}
if (fscanf(fpf,"%d",flag)==EOF)
flag=0;
else flag=fscanf(fpf,"%d",flag);
if (flag==0)
{ printf("请输入录入书籍的个数(<=20):\n");
scanf("%d",&n1);
for (i=0;i<n1;i++)
{
printf("当前正在录入第%d种书\n",i+1);
printf("请输入书名:\n");
scanf("%s",&b[i].name);
printf("请输入作者:\n");
scanf("%s",&b[i].name2);
printf("请输入价格(可用小数):\n");
scanf("%f",&b[i].money);
printf("请输入编号:\n");
scanf("%d",&b[i].num);
printf("请输入入库数量:\n");
scanf("%d",&b[i].many);
printf("请输入录入日期(年(空格)月(空格)日):\n");
scanf("%d %d %d",&b[i].Rdate.year,&b[i].Rdate.month,&b[i].Rdate.day);
fprintf(fp1,"%s %s %f %d %d %d %d %d",b[i].name,b[i].name2,b[i].money,b[i].num,b[i].many,b[i].Rdate.year,b[i].Rdate.month,b[i].Rdate.day);//存书籍信息
flag=flag+1;
}
fprintf(fpi,"%d",i);
fprintf(fpf,"%d",flag);//存标识符
fclose(fp1);
fclose(fpi);
fclose(fpf);
}
//未使用//
else if (flag>0&&flag<=20-flag)
{
printf("请输入新录入书籍的个数:\n");
scanf("%d",&k);
for (flag;flag<=k+flag;flag++)
{
printf("请输入书名:\n");
scanf("%s",&b[flag].name);
printf("请输入作者:\n");
scanf("%s",&b[flag].name2);
printf("请输入价格:\n");
scanf("%f",&b[flag].money);
printf("请输入编号:\n");
scanf("%d",&b[flag].num);
printf("请输入入库数量:\n");
scanf("%d",&b[flag].many);
printf("请输入录入日期:\n");
scanf("%d %d %d",&b[flag].Rdate.year,&b[flag].Rdate.month,&b[flag].Rdate.day);
}
}
else if (flag>20)
printf("空间不足");
//未使用//
printf("输入-1返回主菜单\n");
scanf("%d",&j);
if (j==-1)
menu();
}
void chakan()//查看已录入书籍
{
int i,j=0;
FILE *fp1;//存书的信息指针
fp1=fopen("book1.txt","rt");//只读
if(fp1==NULL)
{
printf("\n不能打开book1.txt");
getch();
exit(1);
}
i=0;
do{ fscanf(fp1,"%s %s %f %d %d %d %d %d",b[i].name,b[i].name2,b[i].money,b[i].num,b[i].many,b[i].Rdate.year,b[i].Rdate.month,b[i].Rdate.day);
printf("书名:%s\n",b[i].name);
printf("作者:%s\n",b[i].name2);
printf("价格:%f\n",b[i].money);
printf("编号:%d\n",b[i].num);
printf("数量:%d\n",b[i].many);
printf("录入日期:%d年%d月%d日\n",b[i].Rdate.year,b[i].Rdate.month,b[i].Rdate.day);
i++;
}while(fscanf(fp1,"%s %s %f %d %d %d %d %d",b[i].name,b[i].name2,b[i].money,b[i].num,b[i].many,b[i].Rdate.year,b[i].Rdate.month,b[i].Rdate.day)!=EOF);
fclose(fp1);
printf("输入-1返回主菜单\n");
scanf("%d",&j);
if (j==-1)
menu();
}
void jieyue()
{
printf("");
}
void guihuan()
{
printf("");
}
void shanchu()
{
printf("");
}
void chazhao()//查找书籍
{ int i,j,a;
printf("请输入书籍编号:");
scanf("%d",&a);
for (i=1;i<=20;i++)
{
if (a==b[i].num)
printf("已查询到书籍信息\n");
printf("所查书籍信息为:\n");
printf("书名:%s\n",b[i].name);
printf("作者:%s\n",b[i].name2);
printf("价格:%f\n",b[i].money);
printf("编号:%d\n",b[i].num);
printf("数量:%d\n",b[i].many);
printf("录入日期:%s\n",b[i].Rdate);
}
printf("输入-1返回主菜单\n");
scanf("%d",&j);
if (j==-1)
menu();
}
int main()//主程序
{
menu();
return 0;
}
运行结果及报错内容 :exe已停止运行
我的解答思路和尝试过的方法 :都试了没用
我想要达到的结果:能不能帮我改进一下代码