6
A
回答
26
int position = 'g' - 'a' + 1;
在C,char
值转换为int
值,并采取他们的ASCII值。在这种情况下,'a'
与97相同,而'g'
的值为103.由于字母表在ASCII字符集内是连续的,因此从您的值中减去'a'
将给出其相对位置。如果您认为'a'
是第一个(而不是第零个)位置,请加1。
3
你也应该考虑大写/小写。在我的经验中,从1开始计数通常是危险的,因为它可能导致错误的错误。作为一个经验法则,我总是只在与用户交互时转换为基于1的索引,并在内部使用基于0的计数,以避免混淆。
int GetPosition(char c)
{
if (c >= 'a' && c <= 'z') {
return c - 'a';
}
else if (c >= 'A' && c <= 'Z') {
return c - 'A';
}
else {
// Indicate that it isn't a letter.
return -1;
}
}
+1
你可以通过在'ctype.h'头中使用'tolower()'或'toupper()'来简化它,这样你就不必检查小写字母和大写字母。 – 2009-10-24 02:39:51
4
这将EBCDIC工作,不区分大小写:
#include <ctype.h>
#include <stdio.h>
#include <string.h>
int getpos (char c)
{
int pos;
const char * alphabet = "abcdefghijklmnopqrstuvwxyz";
const char * found;
c = tolower ((unsigned char)c);
found = strchr (alphabet, c);
pos = found - alphabet;
if (!found)
pos = 0;
else if (pos == 26)
pos = 0;
else
pos++;
return pos;
}
int main()
{
char tests[] = {'A', '%', 'a', 'z', 'M', 0};
char * c;
for (c = tests; *c; c++) {
printf ("%d\n", *c - 'a' + 1);
printf ("%d\n", getpos (*c));
}
return 0;
}
见http://codepad.org/5u5uO5ZR,如果你想运行它。
+0
+1 strchr! 4321 – 2012-01-07 07:17:41
相关问题
- 1. 从Java语言环境获取语言的字母表
- 2. 如何从c语言获取数据
- 3. C# - 如何从语言代码中获取语言名称?
- 4. 如何把字母从字符串? C语言
- 5. 字母的语言问题
- 6. 获取客户端的双字母语言代码
- 7. 如何使用C程序获取当前位置的字符?
- 8. 任何语言的匹配字母
- 9. 如何使用wp globus获取语言
- 10. 如何获取XmlElement的字符位置?
- 11. 如何在Objective-C中获取用户的语言区域设置?
- 12. Objective-C如何枚举字母和位置的字典
- 13. 如何获取语言和输入设置下显示的语言列表
- 14. 如何在Python 3.4中获取字母表中的字符位置?
- 15. 如何获取一个数字并找到它的字母位置python
- 16. 以x86汇编语言获取变量的位置
- 17. 获取C#中的当前语言
- 18. 如何获取语言环境的ISO2语言代码?
- 19. 如何从没有国家的语言获取语言CultureInfo
- 20. 如何在C#中使用词类获取多语言翻译?
- 21. 如何使用C语言中的单元测试语言C?
- 22. C# - 多语言字符串的“取消”
- 23. 如何设置语句以读取字母而不是数字?
- 24. 使用c语言编程获取文件字体格式url
- 25. 在C#中获取当前位置(在区域和语言中指定)
- 26. 如何从C#中的字符串只获取字母?
- 27. 获取当前在C++中设置的全局语言环境?
- 28. 如何获取Android上的当前语言设置
- 29. C语言,获取HTML源码
- 30. 获取文件夹内容C语言
非常感谢 – goe 2009-10-24 02:01:07
请注意,ASCII不是C标准的一部分。它几乎无处不在,因此可以在任何可以实际找到的系统上工作。该标准保证字符集中的数字是连续的,但不包括字母表(在EBCDIC的情况下会让你感到困惑,但是认真地说,谁在乎EBCDIC呢?)。 – 2009-10-24 02:06:16
我爸还在COBOL中使用EBCDIC。他维护波音的东西。 -_- – GManNickG 2009-10-24 02:37:59