如何在C语言中创建字典?

7
我正在用C语言编程微控制器,想在7段显示器上显示特定的字母。每个字母都有一个对应的数字,可以使7段显示器显示该字母。由于数字是通过添加7段显示器上需要显示字母的位得出的,所以没有真正的模式,因此如果我能创建某种字典来完成这项工作,那将非常好。
如果我使用C#之类的语言,我会创建一个字典,然后将字母作为键,数字作为值,但据我所知,我不能在C中这样做。是否有其他方法可以实现,或者我应该编写一个函数,例如int displayletter(char letter),使用一堆if语句返回正确的数字?

寻找C语言中的Trie实现,如果没有的话,哈希表也可以。 - leppie
2个回答

6

你可以创建一个数组

 int values[26];

并用每个字母的值填充它,无论它们是如何计算的

然后创建一个函数,它接受一个字符并返回一个整数

int GetValueFromChar(char c)
{
    return values[c - 'A'];
}

这个假设你只在ASCII字符集中使用大写字母,因此有些简化了,但是你应该能够理解。

1
如果计算机使用的是EBCDIC字符集而不是ASCII呢? - Swiss
4
除非你是1975年的IBM,否则它不会是EBCDIC。 - Greg Hewgill
1
据我所知,z/OS仍然使用EBCDIC作为其主要字符集。@Greg Hewgill - Swiss
EBCDIC仍被广泛使用。虽然只在一个平台(System z)上,但它无处不在。 - paxdiablo
1
谢谢,好主意。完全忘记了ASCII字符只是被视为数字,但这应该很好用。 :) - JimR
显示剩余2条评论

0
最简单的方法是使用函数和switch语句...我认为对于这个目的,switch语句非常高效。我也赞同Judy库作为一个好的用于高效映射的库,但对于这个问题来说有点过度设计了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接