C 映射枚举和字符串
我有一个数组sayC 映射枚举和字符串,c,arrays,string,enums,C,Arrays,String,Enums,我有一个数组sayarr[3],我使用枚举索引到数组say中 typedef enum { ABC, DEF, XYZ }INDEX; 我将值存储在数组中为ar[ABC]=100,以此类推。。。 现在我有一个文件,它的字符串是xyZ=2,dEF=3,abc=4。我解析这个文件并检查字符串。如果字符串是xyZ,那么我需要将值存储在数组arr[xyZ]中,依此类推。。我对用枚举映射字符串感到惊讶。我如何知道文件中字符串的枚举索引。有什么想法吗。希望我清楚。谢谢你可以把'a'作为索引0 #inclu
arr[3]
,我使用枚举索引到数组say中
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;
}
#包括
类型定义枚举{
美国广播公司,
DEF,
GHI,
JKL,
嗯,,
PQR,
斯图,
VWX,
YZ,,
N
}指数;
#定义GET_索引(x)((x)-‘a’)/3)
内部主(空)
{
字符*s[]={“abc”、“def”、“mno”、“def”};
int i,arr[N]={0};
对于(i=0;i<4;i++){
arr[GET_INDEX(s[i][0])]+=1;
}
对于(i=0;i
不幸的是,在C语言中,没有内置的字符串到枚举的强制。你需要自己做这件事。哈希表(如H2CO3所述)是一种很好的方法。或者,如果枚举值的数量很小,请使用if
语句和stricmp
。感谢您的回复。知道Enum吗?除了其他专家建议的哈希表之外。能给我一个char*s[]={“abc”,“def”,“xyz”}
并将其索引用作枚举索引?我认为在s[]
中放置更多元素会占用更多空间。你不能对枚举进行字符串化,你需要一个哈希函数(并注意冲突),我已经编辑了我的答案以供使用枚举,它非常快,并且将“a”作为索引0