void cun(){
int y;
printf("输入你的学号:");
scanf("%d",&y);
while(y){
printf("输入你的名字:");
scanf("%s",stu[y].name);
printf("输入你的身份证号码:");
scanf("%6d%4d%4d%2d%1d%1d",&stu[y].id1,&stu[y].id2,&stu[y].id3,&stu[y].id4,&stu[y].id5,&stu[y].id6);
printf("输入你的生日:");
scanf("%d%d",&stu[y].birthday.month,&stu[y].birthday.day );
printf("输入你的联系电话:");
scanf("%c\n",&stu[y].dianhua[11]);printf("输入你的班级:");
scanf("%s\n",stu[y].grade);
printf("输入你的专业:");
scanf("%s\n",stu[y].zhuanye );
printf("输入你的综测成绩:");
scanf("%d\n",&stu[y].score);
printf("返回主界面\n");
main();
}
}```
int main(){
page();
int x;
scanf("%d",&x);
while(1){
switch(x)
{
case 1:
cha();break;//查询信息区域
case 2:
cun();break;//存入信息区域
case 3:
shan();break;//删除信息区域
case 4:
lie();break;//列出信息区域
default:printf("输入的信息编号有误");
}
}
}```
基于Monster 组和GPT的调写:
死循环可能是由于使用scanf()函数读取字符串时的格式化错误导致的。在读取字符串时,您不需要使用\n作为格式控制符,因为%s格式控制符自动跳过前导空格,并在遇到下一个空格或新行时停止读取。因此,使用%s而不是%s\n应该解决问题。以下是修改后的cun()函数的代码:
void cun() {
int y;
printf("输入你的学号:");
scanf("%d", &y);
while (y) {
printf("输入你的名字:");
scanf("%s", stu[y].name);
printf("输入你的身份证号码:");
scanf("%6d%4d%4d%2d%1d%1d", &stu[y].id1, &stu[y].id2, &stu[y].id3, &stu[y].id4, &stu[y].id5, &stu[y].id6);
printf("输入你的生日:");
scanf("%d%d", &stu[y].birthday.month, &stu[y].birthday.day);
printf("输入你的联系电话:");
scanf("%s", stu[y].dianhua);
printf("输入你的班级:");
scanf("%s", stu[y].grade);
printf("输入你的专业:");
scanf("%s", stu[y].zhuanye);
printf("输入你的综测成绩:");
scanf("%d", &stu[y].score);
printf("返回主界面\n");
main();
}
}
建议在每次读取数据后,使用getchar()把回车‘\n’给消掉