2010-12-21 73 views
5

我有一個數組,看起來像這樣:數組c與串 - 操縱/訪問

struct table_elt 
{ 
    int id; 
    char name[]; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

我試圖通過地圖[1]。名稱等,以訪問這些元素然而,它似乎無法正確獲取元素,並且我得到了隨機垃圾。我認爲這是因爲編譯器不知道元素會因變化而落地。解決這個問題的最好方法是什麼,同時仍然保持靈活性和簡單性?

回答

8

你可能想:

struct table_elt 
{ 
    int id; 
    const char *name; 
} 

struct table_elt map[] = 
{ 
    {123,"elementt1"}, 
    {234,"elt2"}, 
    {345,"elt3"} 
}; 

在一個側面說明,table_elt甚至不需要一個名字,如果它僅在這種情況下使用。

1

您不能在table_elt結構中有一個未定義長度的數組。您可以將其更改爲char *,並將它指向其他地方分配的char數組,或者爲您的數組選擇合適的長度並將其包含在結構定義中:

struct table_elt 
{ 
    int id; 
    char name[15]; 
} 
+0

此作品太! – jetru 2010-12-22 06:53:27