La Antonio 2021-12-23 04:30 采纳率: 100%
浏览 47
已结题

C语言中for语句自动结束循环?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
int num;
    char name[10], name2[10]; 
    int o, s, n, m, w, i, j, id, id2, same=0, *a, *a2;
    num = EMPNUM();
    EMP();
    printf("请输入将修改的职工的人数:"); 
    scanf("%d", &o);
    system("cls");
    for(i=0; i<o; i++){
        do{
            printf("您将输入该职工的(1 id,2 姓名):"); 
            scanf("%d", &s);
        }while(s<1 || s>2);
        system("cls");
        if(s == 1){
            printf("请输入该职工的id:");
            scanf("%d", &id);
            printf("职工号 姓名 性别代码 部门编号 基本工资 津贴 个税 其他扣款\n");
            for(m=0; m<num; m++){
            //    printf("%d\n", num);
            //    printf("%d\n", m);
                if(id == Emp[m].id){
                    printf("%-5d%-s    %-3d  %3d     %-5d %-5d %-5d %-5d\n", Emp[m].id, Emp[m].name, Emp[m].sex, Emp[m].depart, Emp[m].mon, Emp[m].add, Emp[m].per, Emp[m].ele);
                    *a = m;
                    a++;
                    same++;
                }    //num数值正常, m只会取到Emp[m].id取得到数为止
            }        //且不再往下走
            while(same > 1){
                printf("请输入该职工姓名:");
                scanf("%s", name2);
                for(; !eof(*a); a--){
                    if(strcmp(name2, Emp[*a].name) == 0){
                        m = *a;
                        printf("更改职工为:\n");
                        printf("职工号 姓名 性别代码 部门编号 基本工资 津贴 个税 其他扣款\n");
                        printf("%-5d%-s    %-3d  %3d     %-5d %-5d %-5d %-5d\n", Emp[m].id, Emp[m].name, Emp[m].sex, Emp[m].depart, Emp[m].mon, Emp[m].add, Emp[m].per, Emp[m].ele);
                        break;
                    }
                }
            }

运行结果及报错内容

num数值正常, m只会取到Emp[m].id取得到数为止。
即,当id=10时,m只循环十次,num却是100;当id=100,m循环一百次。
程序也不会继续往下走,只会停在Emp[]的输出上,强制退出。

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

不清楚为什么会这样,希望各位帮帮忙

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • La Antonio 2021-12-23 16:40
    关注

    已通过debug解决,是野指针的问题。

        int *a = (int *)malloc(10*sizeof(int));
        int *a2 = (int *)malloc(10*sizeof(int));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月23日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度