2013-04-23 41 views
0

我正在将已完成(使用4个数组)的程序更改为使用typedef创建保存这些数组的结构的新程序,所以我只是用一个代替。使用Typedef在2D数组中存储元素

要做到这一点,我用这个代码:

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

我将如何得到它来存储的得分“阵列仍处于信息?

此外,我将如何调用信息出该数组?

+0

所以当你拥有了它宣称'everything'是n'13东西'数组,但循环看起来不像你想要的那样。 – 2013-04-23 01:49:51

回答

0

您还有scores,它只是在结构中。您可以使用正常的阵列和结构接入运营商访问:

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

x必须012(含)为您宣布everything是的stuff13之间。

0
stuff everything[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]); 
     } 
    } 
} 

当你想要把东西进入此阵,结构,你应该遵循同样的逻辑,上述

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; 
} 
相关问题