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

标签 c

<分区>

我有一个枚举 例如。

enum {
APPLE,
MANGO,
BANANA
}

和一个对应的字符串数组

char fruits[] = 
{
 "apple",
 "mango",
 "banana"
}

如果我有字符串,我需要检索字符串的索引。所以假设字符串是 apple,我需要得到 0 等等。 [ Enum 也在那里,可能有助于解决问题]

有没有一种优雅的方法来保存简短的[apple,0],[banana,1],我可以将其用作宏。我不需要像哈希表这样冗长的东西。 Enum可以辅助映射吗?

最佳答案

你可以做类似的事情

条目.h

 ENTRY(APPLE, "apple"), 
 ENTRY(MANGO, "mango"),

在你的文件中

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

#undef ENTRY
#define ENTRY(a,b) a
enum fruit_t
{
#include "entries.h"
} ;

关于c - 如何维护字符串与其在 C 中的索引之间的映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862691/

相关文章:

python - 使用Ctypes在Python程序中调用call by reference c程序

c - 有没有办法限制指针被特定函数修改?

c - 进程间如何发送信号?

python - Python中有比 "marshal"或 "cPickle"更底层的对象操作函数吗?

c - 难以理解 C 中的结构

c - 来自子进程的 pthread_create

c - C中对象的指针矩阵

c - 一个套接字多个线程

谁能确认我(欧拉法)对这些常微分方程的实现?

C内存泄漏与双指针