我想给字符分配整数值。其中“ C”的值最小,而“ B”的值最大。
还有比映射更好的东西吗?
例如:-'C'= 100,'D'= 101,'E'= 102 ....'B'= 126。与映射相比,还有更好的方法吗? 如果输入字符串为“ BYE”,则输出应为351(因为'B'= 126,'Y'= 123,E ='102')。
答案 0 :(得分:1)
如果ASCII编码不符合您的要求,则必须实现自己的翻译功能,例如:
struct TranslationMapRecord
{
char character;
int code;
};
struct TranslationMapRecord map[] =
{
{ 'C', 100 },
{ 'D', 101 },
...
{ 'B', 126 }
}
int translate(char c)
{
int i;
for (i = 0; i < (sizeof(map)/sizeof(map[0]); ++i)
{
if (map[i].character == c)
return map[i].code;
}
return 0;
}
答案 1 :(得分:1)
您可以使用指定的数组初始化程序:
// UCHAR_MAX is from header <limits.h>
int const map[UCHAR_MAX] = {
['C'] = 100,
['D'] = 101,
['B'] = 126,
};
未分配的字符的值为零。
然后您将获得带有表达式的单个值:
int value = map[(unsigned char)character];