takeiteasy_ 2022-05-17 10:08 采纳率: 93.3%
浏览 54
已结题

在做结构体的时候用vs输入的答案,但vs还是一直报错


#include<stdio.h>
#include<stdlib.h>
typedef struct student ss;
struct student
{
    char id[20];
    char name[25];
    int score[3];
};
void Input(int n, ss* p);
void Output(int n, ss* p);
int main()
{
    int N;
    scanf_s("%d", &N);
    ss* p = (ss*)malloc(sizeof(ss)*N);
    Input(N, p);
    Output(N, p);
    free(p);
    return 0;
}
void Input(int n, ss* p)
{
    for (int i = 0; i < n; i++)
    {
        scanf_s("%s%s%d%d%d\n", p[i].id, p[i].name, &p[i].score[0], &p[i].score[1], &p[i].score[2]);
    }
    return;
}
void Output(int n, ss* p)
{
    for (int i = 0; i < n; i++)
    {
        printf("%s,%s,%d,%d,%d\n", p[i].id, p[i].name, p[i].score[0], p[i].score[1], p[i].score[2]);
    }
    return ;
}

vs一直报错Input中scanf_s那一句一直说:0x7BF5D4EC (ucrtbased.dll)处(位于 结构体成绩记录(答案).exe 中)引发的异常: 0xC0000005: 写入位置 0x0107E000 时发生访问冲突。
我输入的是正确答案,但是我自己输入自己代码的时候也是一直报这个错误,为啥啊。

  • 写回答

1条回答 默认 最新

  • 吕布辕门 新星创作者: 后端开发技术领域 2022-05-17 10:39
    关注

    改了下

    img

    
     
    #include<stdio.h>
    #include<stdlib.h>
    typedef struct student ss;
    struct student
    {
        char id[20];
        char name[25];
        int score[3];
    };
    void Input(int n, ss* p);
    void Output(int n, ss* p);
    int main()
    {
        int N;
        scanf("%d", &N);
        ss* p = (ss*)malloc(sizeof(ss)*N);
        Input(N, p);
        Output(N, p);
        free(p);
        return 0;
    }
    void Input(int n, ss* p)
    {
        for (int i = 0; i < n; i++)
        {
            scanf("%s%s%d%d%d\n", p[i].id, p[i].name, &p[i].score[0], &p[i].score[1], &p[i].score[2]);
        }
        return;
    }
    void Output(int n, ss* p)
    {
        for (int i = 0; i < n; i++)
        {
            printf("%s,%s,%d,%d,%d\n", p[i].id, p[i].name, p[i].score[0], p[i].score[1], p[i].score[2]);
        }
        return ;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月25日
  • 已采纳回答 5月17日
  • 创建了问题 5月17日