2013-07-27 28 views
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:錯誤:無效的初始化程序

+1

定義「不爲我們工作「。 –

+0

我將在錯誤中編輯,謝謝! –

+0

如何調用'add_new'? 'char name = getfield(dism2A03 [m],'name');'和'char name [NAME_SIZE] = dism2A03 [m] .name;'沒有意義 – P0W

回答

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); 
} 
+0

非常感謝你在做出這個小改動後工作! –

相關問題