医院挂号系统C语言中的问题

问题遇到的现象和发生背景

只能输入账号然后程序就自动崩溃了

问题相关代码,请勿粘贴截图

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int num=239104835;
typedef struct information{
char name[77];//姓名
int A;//挂号单编号
int sex;//性别 男:1 女:0
int age;//年龄
struct information next;
}IF;
typedef struct Account{
char account[10];
char password[10];
}Ac;
void gh();//用于挂号的函数
void jh();//用于叫号
void fzs();//用于分诊室
void dl();//用于显示队列信息
void tj();//用于统计当天就诊情况
void menu();//系统操作菜单
int main()//账号注册或登录界面
{
FILE fp1;
fp1=fopen("account.txt","a");
FILE fp2;
fp2=fopen("account.txt","r");
if(fp1==NULL)
{
printf("程序出错,请询问工作人员!");
return 0;
}
if(fp2==NULL)
{
printf("程序出错,请询问工作人员!");
return 0;
}
int n;
char t[100];
char j[100];
Ac f;
printf("\n\t
欢迎使用医院挂号系统-
");
printf("\n\t请先登录(输入1)(如果没有账号请注册(输入0)):");
scanf("%d",&n);
if(n==0)
{
printf("\n\t请输入注册账号(账号为6-9位,由数字和字母组成,不可含有字符,不含空格):");
scanf("%s",f->account);
printf("\n\t请输入注册密码(密码为6-9位,由数字和字母组成,可含字符,不含空格):");
scanf("%s",f->password);
printf("\n\t注册成功请保管好你的账户,不要借给别人!");
fprintf(fp1,"%s %s",f->account,f->password);
menu();
}
else if(n==1)
{
printf("\n\t请输入账号:");
scanf("%s",f->account);
printf("\n\t请输入密码:");
scanf("%s",f->password);
fscanf(fp2,"%s %s",t,j);
if(strcmp(f->account,t)==0&& strcmp(f->password,j)==0)
{
printf("\n\t登录成功!");
menu();
}
else
{
printf("请重新打开程序");
return 0;
}
}
}
void menu()
{
system("cls");
int n;//供选择的数
printf("\n\t
欢迎使用医院挂号系统
");
printf("\n\t* 1 : 挂号");
printf("\n\t* 2 : 叫号");
printf("\n\t* 3 : 诊室分配");
printf("\n\t* 4 : 显示各诊室排队情况");
printf("\n\t* 5 : 统计当天就诊患者情况");
printf("\n\t* 6 : 退出程序");
printf("\n\t请输入你想进行操作的数字:");
while(scanf("%d",&n)!=EOF)
{
if(n==6)
{
return;
}
switch(n)
{
case 1: gh(); break;
case 2: jh(); break;
case 3: fzs(); break;
case 4: dl(); break;
case 5: tj(); break;
default: printf("输入错误请重新输入:\n");break;
}
}
}
void gh()
{
system("cls");
printf("\t请依次输入您的各种信息(姓名 性别(男性输入1 女性输入0) 年龄):\n");
FILE *fp;
fp= fopen("information.txt","a");//打开一个存储信息的文件
if(fp==0)
{
printf("程序运行错误,请重新尝试");
return;//如果打开不成功就返回
}
IF *head=NULL;
IF *p;
p=(IF *) malloc(sizeof(IF));
p->next=NULL;
printf("\t姓名:");//输入患者信息
scanf("%s",p->name);
printf("\t性别:");
scanf("%d",&p->sex);
printf("\t年龄:");
scanf("%d",&p->age);
head=p;
printf("\n\t这是您的挂号单号:%d",num);
p->A=num;
++num;
fprintf(fp,"名字:%s 挂号单编号:%d 性别:%d 年龄:%d\n",p->name,p->A,p->sex,p->age);
fclose(fp);
menu();
}
void jh()
{

}
void fzs()
{

}
void dl()
{

}
void tj()
{

}

运行结果及报错内容

运行只能输入账号 密码无法输入 直接崩溃了

我的解答思路和尝试过的方法

不知道哪里出了问题

我想要达到的结果

让账号密码都输入成功

你定义长度是10,输入6位长度,回车试一下

img