为什么程序终止了,这是哪里错了

img

img


结构体也太难爱惜,一下也不会了,咋办呢,求帮助我,help,字数为啥得30个啊

img


红圈那里的 & 去掉

第二个scanf_s
&a[i].MC
去掉这一个&试试
MC类型是char*,它本身就是一个指针, 不用加&

不知道是不是结构体里包含 char* 类型的问题
你查阅下相关文档吧, char* 只是保存了一个地址, 你输入的字符串可能不知道被保存到哪去了,造成内存泄漏,所以被系统终止了
还有种可能,scanf输入字符串时,空格也是有效的字符,所以会和后面的DJ,SL出现冲突

不能给指针直接赋值。。。
用scanf_s向字符串,需要限定长度,如,scanf_s("%s",buf,5)

#define _CRT_SECURE_NO_DEPRECATE
#include<stdio.h>
#include<string.h>
struct good {
    char MC[10];
    double DJ;
    int SL;
};
int main() {
    int N;
    double All = 0.0;
    scanf("%d", &N);
    struct good g[100];
    for (int i = 0; i<N; i++) {
        scanf("%s %lf %d", g[i].MC, &g[i].DJ, &g[i].SL);
        All += g[i].DJ*g[i].SL;
    }
    printf("%lf", All);
    system("pause");
    return 0;
}