映射枚举和字符串

时间:2013-08-02 07:00:10

标签: c arrays string enums

我有一个数组说arr[3],我使用枚举来索引数组说

typedef enum {
ABC,
DEF,
XYZ
}INDEX;

我将数组中的值存储为ar[ABC] = 100,依此类推...... 现在我有一个字符串为xyZ = 2, dEF = 3, abc = 4的文件。我解析这个文件并检查字符串。如果字符串是xyZ,那么我需要将值存储在数组arr[XYZ]中,依此类推。我在使用枚举映射字符串时感到震惊。我将如何知道包含字符串的字符串的枚举索引文件。请任何想法。希望我很清楚。谢谢

1 个答案:

答案 0 :(得分:0)

您可以将'a'作为索引0

#include <stdio.h>

typedef enum {
    ABC,
    DEF,
    GHI,
    JKL,
    MNO,
    PQR,
    STU,
    VWX,
    YZ,
    N
} INDEX;

#define GET_INDEX(x) (((x) - 'a') / 3)

int main(void)
{
    char *s[] = {"abc", "def", "mno", "def"};
    int i, arr[N] = {0};

    for (i = 0; i < 4; i++) {
        arr[GET_INDEX(s[i][0])] += 1;
    }
    for (i = 0; i < N; i++) {
        printf("arr[%d]=%d\n", i, arr[i]);
    }
    return 0;
}