由于结构,for循环中的分段错误?

时间:2013-04-23 04:32:28

标签: c arrays struct segmentation-fault typedef

我有一个已经在工作的程序,现在必须将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);

在我完成整个程序后我不断发现分段错误,并且不确定它来自何处,所以我评论了所有内容并逐一取消注释,以查看分段错误发生的位置。它开始在这里再次出现,我不知道为什么。我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:3)

您在此行fscanf(score, "%d", everything[i].scores[i][j]);中有错误。

更好地使用此

fscanf(score, "%d", &everything[i].scores[i][j]);。你在这一行忘了&。您必须告诉mem address存储扫描值。

答案 1 :(得分:1)

从我可以收集到的问题是,所有内容都不包含13个结构实例,因此当它尝试通过for循环时,它无法在内存中找到存储数据的相关位置。