NICKZX136 2022-12-30 23:16 采纳率: 66.7%
浏览 23
已结题

一个stdio.h的错误0x00007FFB452ED646 (ucrtbased.dll)处

要写一个职工工资管理系统;

img

1. 职工工资项目信息的基本结构如下:
char *ITEM[MAXI] //职工工资项目数组,存放工资项目名称。(字符串数组)
说明:工资项目可包括:基本工资、职务工资、岗位津贴、医疗保险、公积金、
奖金、住房补贴等。工资项目可以按需要增加、修改和删除,不固定。工资项目
最多 50 项, 0~49。
2.系统基本功能:提供工资项目信息的录入、修改和删除;职工工资信息的录
入、修改、查询和统计等,工资项目及职工工资信息可保存在文件中,系统启动
时打开文件可新增职工工资信息并保存。

结构体:

typedef struct staff {
    int num;            /* 职工编号 */
    char name[20];        /* 姓名 */
    char dept[50];        /* 所属部门 */
    double S[MAXI];         /* 工资项目数组,与数组 ITEM[MAXI]的标号对应,0~49*/
    double total;        /* 工资合计 */
    struct stuff *next;
}EMPLOYEE;

主程序中全局变量:

EMPLOYEE* head = NULL, * tail = NULL;
char ITEM[MAXI][20];
int count1 = -1;        /*项目数量计数*/ /*count1 +1 是真实的项目数量*/
int count_staffnum = 0;        /*职工数量统计*/

相关函数:

extern EMPLOYEE* head;
extern int count1;
extern char ITEM[MAXI][20];
int fun31()
{
    int num;
    int cnt=0;
    char re[10];

    EMPLOYEE* p1=NULL;
    if (head == NULL)     /*职工信息为空*/
    {
        printf("职工信息记录为空,请先添加职工信息\n");
        printf("请按任意键返回上一级\n");
        printf(">>");
        getch(re);
        return NULL;
    }
    else{
        printf("请输入要新增工资项目的职工编号\n");
        printf(">>");
        scanf("%d", &num);
        p1 = (EMPLOYEE*)malloc(sizeof(EMPLOYEE*));
        p1 = head;
        while (p1 != NULL)    /*判断是否存在该职工*/
        {
            if (p1->num == num)
            {
                cnt++;
                break;
            }
            p1 = p1->next;
        }
        if (cnt == 1) 
        {
            printf("以下是已有的工资项目,请按顺序填入,按空格输入下一项\n");
            for (int i = 0; i < count1 + 1; i++)
            {
                printf("%s   ", ITEM[i]);
            }
            printf("\n");
            for (int i = 0; i < count1 + 1; i++)
            {
                scanf("%d", p1->S[i]);
            }
            printf("添加成功!\n");
            printf("请按任意键返回上一级\n");
            printf(">>");
            getch(re);
            return NULL;
        }
        else
        {
            printf("该职工信息不存在,添加失败!\n");
            printf("请按任意键返回上一级\n");
            printf(">>");
            getch(re);
            return NULL;
        }
    }
}

建立链表用于储存职工的ID、姓名、部门、工资项目等;
我想通过指针p1来寻找到链表里面想要添加工资项目的职工,从而可以将工资输入到该职工的信息中,但是出现如下错误:

img

请教一下各位,这个怎么解决?

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-30 23:31
    关注

    这种错误一般是输入指针问题。
    44行scanf("%d", p1->S[i]); 缺&

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器