1

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

这是我的结构:

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:错误:初始化程序无效

4

1 回答 1

2

您的第一次尝试意味着存在getfield接受 astruct和多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);
}
于 2013-07-27T11:07:04.003 回答