我正在使用C编程并使用gcc进行编译。 每次我编译我得到一个堆栈粉碎检测到错误。 这是什么意思,我该如何解决?
#include <stdio.h>
#define MAX_ARRAY 50
static int getScore(int assignmentNum[], int weight[], int daysLate[], float score[]){
int position, tempWeight, tempLate;
float tempScore;
scanf("%d %f %d %d", &position, &tempScore, &tempWeight, &tempLate);
score[position] = tempScore;
weight[position] = tempWeight;
daysLate[position] = tempLate;
assignmentNum[position] = position;
return weight[position];
}
int main(void){
int penalty_points, num_drop, num_assignment;
static int assignmentNum[MAX_ARRAY], daysLate[MAX_ARRAY], weight[MAX_ARRAY];
static float score[MAX_ARRAY];
char statGen;
int total = 0;
scanf("%d %d %s", &penalty_points, &num_drop, &statGen);
printf("%d\n", penalty_points);
while (total < 100) {
total = total + getScore(assignmentNum, weight, daysLate, score);
}
return 0;
}
答案 0 :(得分:6)
您将%s
与&statGen
一起使用。 %s
说明符用于字符串;相应的参数必须指向一个具有足够空间的缓冲区,包括一个终止空字符。但是,statGen
是一个char
。
要只阅读一个char
,请使用"%c"
代替"%s"
。如果要在角色前跳过空格,请使用" %c"
。空格要求scanf
跳过空格。