G帅T 2023-03-03 11:45 采纳率: 76%
浏览 36
已结题

C语言循环和输入问题当输入文字时死循环

img


当我输入数字在专业那里的时候不会死循环,当输入文字的时候死循环

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("输入的信息编号有误");
        } 
        }

}```

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-03-03 12:57
    关注

    基于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();
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月11日
  • 已采纳回答 3月3日
  • 修改了问题 3月3日
  • 创建了问题 3月3日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?