1

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

typedef enum {
ABC,
DEF,
XYZ
}INDEX;

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

4

1 回答 1

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;
}
于 2013-08-02T07:17:20.297 回答