4

文字列の値を使用して、構造体内のメンバーにアクセスしたいと思います。

struct hello_world
{
           char rate;
           char ssid;
};

言いましょう変数があります

char *string="ssid";

この文字列の値を使用して、構造ssid体内のメンバーを参照したいと考えています。hello_worldこれは可能ですか?

4

3 に答える 3

6

いいえ、そうではありません。

これを行うには、(長い)if-elseステートメントが必要です。お気に入り:

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

if( 0 == strcmp( "ssid", string ) )
{
     // use hw.ssid
}
else if ...
于 2013-03-22T10:01:13.470 に答える
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;
}

この方法は、文字列を比較するよりもはるかに高速です。

1 つのフィールドのみを使用する場合、または他のフィールドを使用する場合は、構造体の代わりにユニオンを使用できます。

于 2013-03-22T10:05:26.523 に答える
0

必要なメンバーを返すラッパーのような関数を定義します。

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

しかし、言語自体はこのようなものを提供しません。

于 2013-03-22T10:02:00.640 に答える