C结构体数组中包含字符串的操作/访问

5

我有一个像这样的数组:

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

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

我试图通过map[1].name等方式访问这些元素。然而,它似乎无法正确获取元素,我得到了一些随机的垃圾信息。我认为这是因为编译器不知道元素由于变化而会落在哪里。在仍然保持尽可能灵活和简单的情况下,最好的解决方法是什么?

2个回答

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];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接