如何在C中维护字符串与其索引之间的映射?

Hoo*_*oli 4 c

我有一个枚举Eg.

enum {
APPLE,
MANGO,
BANANA
}
Run Code Online (Sandbox Code Playgroud)

和相应的字符串数组

char fruits[] = 
{
 "apple",
 "mango",
 "banana"
}
Run Code Online (Sandbox Code Playgroud)

我需要检索字符串的索引,因为我有字符串.因此,如果字符串是苹果,我需要得到0,依此类推.[ Enum另外,可能有助于解决方案]

是否有一种优雅的方式,保存[apple,0],[banana,1]简短,我可以用作宏.我不需要像哈希表那样冗长的东西.可以Enum协助映射吗?

use*_*003 10

你可以做点什么

entries.h

 ENTRY(APPLE, "apple"), 
 ENTRY(MANGO, "mango"),
Run Code Online (Sandbox Code Playgroud)

在你的文件中

#define ENTRY(a,b) b
const char *fruits [] = {
#include "entries.h"
} ; 

#undef ENTRY
#define ENTRY(a,b) a
enum fruit_t
{
#include "entries.h"
} ;
Run Code Online (Sandbox Code Playgroud)