0

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

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

4

2 回答 2

3

你在这行有错误fscanf(score, "%d", everything[i].scores[i][j]);

最好用这个

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

于 2013-04-23T04:36:18.670 回答
1

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

于 2013-04-23T04:39:37.767 回答