0

我正在将我已经完成的程序(使用 4 个数组)更改为一个新程序,该程序使用 typedef 创建一个包含这些数组的结构,所以我只使用一个。

为此,我使用了以下代码:

typedef struct structure
{
char names[13][9];
int scores[13][4];
float average[13];   
char letter[13];
} stuff; 

现在包含所有这些的一个数组是:

stuff everything[13];

但是,由于“名称”“分数”“平均”和“字母”不再存在,我遇到了一些并发症,我必须将其更改为通过 typedef。所以,作为一个例子,我有这个代码:

for(i=0; i<13; i++)
{
    for(j=0; j<4; j++)
    {
    fscanf(score, "%d", &scores[i][j]);
    }
}   
fclose(score);

我如何让它将信息存储在“分数”数组中?

另外,我以后如何从该数组中调用信息?

4

3 回答 3

0

你仍然有scores,它只是在结构内部。您可以使用普通的数组和结构访问运算符来访问它:

everything[x].scores[i][j] = 6;

x正如您声明的那样,必须介于0和(包括)之间。12everything13stuff

于 2013-04-23T01:45:25.960 回答
0
 stuff everything[13];

声明一个包含 13 个结构的数组,其类型为stuff. 它相当于

 struct structure everything[13];

typedef你不需要再写struct structure了。

为了从上述结构数组中访问信息,您可以执行以下操作scores(类似的推理适用于其他字段:

 for (int i = 0; i < 13; ++i )
 {
    for ( int j = 0; j < 13; ++j)
    {
       for (int k = 0; k < 4; ++k)
       {
           printf("%d ", everything[i].scores[j][k]);
       }
   }
 }

当你想把东西放入这个结构数组时,你应该遵循与上面相同的逻辑。

于 2013-04-23T01:53:23.193 回答
0

可能你想要的是这样的:

#define NUM_TEAMS 13
typedef struct 
{
    char names[9];
    int scores[4];
    float average;   
    char letter;
} team; 

team everything[NUM_TEAMS];

int readInScores(team* allTeams)
{
    int i = 0;
    int j= 0;
    FILE* score = fopen("whatever", "r");
    if (score == 0)
        return 0;
    for(i=0; i<NUM_TEAMS; i++)
    {
        for(j=0; j<4; j++)
        {
            fscanf(score, "%d",&allTeams[i].scores[j]);
        }
    }   
    fclose(score);
    return 1;
}
于 2013-04-23T02:07:16.603 回答