使用Typedef在2D数组中存储元素

时间:2013-04-23 01:42:40

标签: c arrays struct typedef

我将已经完成的程序(使用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);

如何将信息存储在&#39;分数中?阵列还在吗?

此外,我将如何从该阵列中调出信息?

3 个答案:

答案 0 :(得分:0)

你还有scores,它就在结构内部。您可以使用普通数组和结构访问运算符访问它:

everything[x].scores[i][j] = 6;
当您宣布x0 12时,

everything必须介于13stuff之间(包括)。

答案 1 :(得分:0)

 stuff everything[13];

声明一个包含类型stuff的13个结构的数组。它相当于

 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]);
       }
   }
 }

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

答案 2 :(得分: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;
}