我有一个已经在工作的程序,现在必须将4个数组更改为1,所以我使用了一个typedef结构并创建了一个名为stuff的数据类型。然后做了一个数组类型的东西,称为一切。一切都包含四个数组:
typedef struct structure
{
char names[13][9];
int scores[13][4];
float average[13];
char letter[13];
} stuff;
在程序的后期,fopen被称为:
FILE *student, *score;
student = fopen("student.dat", "r");
score = fopen("scores.dat", "r");
之后使用了fscanf:
for(i=0; i<13; i++)
{
for(j=0; j<4; j++)
{
fscanf(score, "%d", everything[i].scores[i][j]);
}
}
fclose(score);
在我完成整个程序后我不断发现分段错误,并且不确定它来自何处,所以我评论了所有内容并逐一取消注释,以查看分段错误发生的位置。它开始在这里再次出现,我不知道为什么。我该怎么做才能解决它?
答案 0 :(得分:3)
您在此行fscanf(score, "%d", everything[i].scores[i][j]);
中有错误。
更好地使用此
fscanf(score, "%d", &everything[i].scores[i][j]);
。你在这一行忘了&
。您必须告诉mem address
存储扫描值。
答案 1 :(得分:1)
从我可以收集到的问题是,所有内容都不包含13个结构实例,因此当它尝试通过for循环时,它无法在内存中找到存储数据的相关位置。