如何根据字符串的值访问`struct'的成员?

时间:2013-03-22 09:59:06

标签: c string struct

我想通过使用字符串的值来访问结构中的成员:

struct hello_world
{
           char rate;
           char ssid;
};

有一个varibale让我们说

char *string="ssid";

我想使用此字符串的值来引用ssid结构中的hello_world成员。这可能吗?

3 个答案:

答案 0 :(得分:5)

不,不是。

你需要一个(长)if-else语句来执行此操作。像:

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

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

答案 1 :(得分: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;
}

此方法比比较字符串更快。

如果你只使用另一个字段 OR ,你可以使用union而不是struct。

答案 2 :(得分:0)

定义一个函数,就像一个包装器,可以将所需的成员传递回去。

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

但语言本身并没有为你提供这样的东西。