如何根据字符串的值访问一个'结构的成员?(How to access members of

2019-08-17 20:53发布

我想使用字符串值的结构内访问的成员:

struct hello_world
{
           char rate;
           char ssid;
};

有一种varibale假设

char *string="ssid";

我想用这个字符串的值来表示ssid成员中hello_world结构。 这可能吗?

Answer 1:

不,不是这样的。

你需要一个(长) if-else语句,这将做到这一点。 喜欢:

struct hello_world hw;
char *string="ssid";

if( 0 == strcmp( "ssid", string ) )
{
     // use hw.ssid
}
else if ...


Answer 2:

而不是使用一个字符串,你是关闭使用枚举所有可能情况更好。

typedef enum {
    FIELD_SSID,
    FIELD_RATE,
} field_t

field_t string;

然后用一个开关

switch (string) {
    case FIELD_SSID:
        //use ssid
        break;
    case FIELD_RATE:
        //use rate
        break;
}

这种方法比比较字符串的方式更快。

如果您只使用一个场其他,你可以使用一个工会,而不是一个结构。



Answer 3:

定义一个函数,类似于包装打发回成员想要。

char GiveMember(struct hello_world, char* member){ }

但语言本身并不为你提供这样的事。



文章来源: How to access members of a `struct' according to a value of a string?
标签: c string struct