我有一个数组说arr[3]
,我使用枚举来索引数组说
typedef enum {
ABC,
DEF,
XYZ
}INDEX;
我将值存储在数组中ar[ABC] = 100
,依此类推...现在我有一个文件,其字符串为xyZ = 2, dEF = 3, abc = 4
. 我解析这个文件并检查字符串。如果字符串是,xyZ
那么我需要将值存储在数组中arr[XYZ]
等等。我在用枚举映射字符串时感到震惊。我如何知道枚举索引与文件中的字符串。请有任何想法。希望我很清楚。谢谢
您可以'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;
}