我正在尝试从结构数组中检索值。我不知道检索它们的正确方法。
这是我的结构:
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:错误:初始化程序无效
答案 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);
}