带字符串的C结构数组-操作/访问

带字符串的C结构数组-操作/访问,c,C,我有一个如下所示的数组: struct table_elt { int id; char name[]; } struct table_elt map[] = { {123,"elementt1"}, {234,"elt2"}, {345,"elt3"} }; 我试图通过map[1].name等来访问这些元素。但是,它似乎无法正确地获取元素,我会得到随机垃圾。我认为这是因为编译器不知道元素会在什么地方着陆,这是由于变量的不同。在保持灵活性和简单性的同时

我有一个如下所示的数组:

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

struct table_elt map[] =
{
    {123,"elementt1"},
    {234,"elt2"},
    {345,"elt3"}
};
我试图通过map[1].name等来访问这些元素。但是,它似乎无法正确地获取元素,我会得到随机垃圾。我认为这是因为编译器不知道元素会在什么地方着陆,这是由于变量的不同。在保持灵活性和简单性的同时,解决此问题的最佳方法是什么?

您可能需要:

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

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

另一方面,
table\u elt
如果仅用于此上下文,甚至不需要名称。

在table\u elt结构中不能有未定义长度的数组。您可以将其更改为char*,并使其指向其他位置分配的char数组,或者为数组选择适当的长度并将其包含在结构定义中:

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