我如何获得存储在struct中的值?

时间:2013-07-27 11:02:29

标签: c struct

我正在尝试从结构数组中检索值。我不知道检索它们的正确方法。

这是我的结构:

struct entry{
    char name[NAME_SIZE];
    int mark;
};

typedef struct entry Acct;
Acct dism2A03[MAX_ENTRY];

我如何分配价值观:

void add_new(char *name,int mark){
    printf("%s,%d",name,mark);
    int v=0;
    v=entry_total;
    strcpy(dism2A03[v].name,name);
    dism2A03[v].mark = mark;
}

我尝试了什么(不工作):

int m=0;
for(m=0;m<MAX_ENTRY;m++){
                char name[NAME_SIZE] = dism2A03[m].name;
    line 75 >>          int mark = dism2A03[m].mark;
                printf("\nEntry %d",m);
                printf("%s",name);
                printf("%d",mark);
             }

错误:     p9t2.c:在函数'main'中:     p9t2.c:75:5:错误:初始化程序无效

1 个答案:

答案 0 :(得分:2)

您的第一次尝试意味着存在getfield函数,该函数采用struct和多字符char字面值并获取字段; C中没有这样的功能。

您的第二次尝试更接近:不是尝试将名称分配给数组,而是将其分配给char指针,如下所示:

int m=0;
for(m=0;m<MAX_ENTRY;m++){
    // Since you aren't planning on modifying name through pointer,
    // you can declare the pointer const to make your intentions clear.
    const char *name = dism2A03[m].name;
    int mark = dism2A03[m].mark;
    printf("\nEntry %d",m);
    printf("%s",name);
    printf("%d",mark);
}