第二个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;
}