(2)我希望能够获得两个字母之间的字母数距离...
这个目标说明比你实际提出的问题更有意义!为什么不问这个呢?您可以在字符数组上使用
strchr
,而
strchr
不关心本地字符集是什么,这意味着您的代码不会关心本地字符集是什么...例如:
char alphabet[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
ptrdiff_t fubar = strchr(alphabet, 'y') - strchr(alphabet, 'X');
printf("'X' and 'y' have a distance of %tu and a case difference of %tu\n", fubar / 2, fubar
“如何确定连续字母字符的值是否本身连续?”
按定义,连续字母字符的值是连续的,因为它们是“连续字母字符”。我知道这不是你的意思,但你实际上的问题说明了缺乏计划和思考,而一个愚蠢的问题应该有一个愚蠢的答案。
您最好编写程序的方式是,“您不关心”它们具有的值。尽管如此,创建一个包含您关心的字符的数组,循环遍历元素并测试其一致性。例如:
int is_consecutive(char const *alphabet) {
for (size_t x = 0; alphabet[x] && alphabet[x] + 1 == alphabet[x + 1]; x++);
return !alphabet[x];
}
...我怎样才能确定我可以在单引号内表达的字符常量是否具有它们的 ASCII 代码作为数字值?
再次缺乏意义,又关心值...或者,构建两个翻译表 native_to_ascii 和 ascii_to_native,并从那里解决问题。我不会帮你做这个,因为这是一个愚蠢的练习,涉及使用魔术数字,这很可能对你实际目标没有必要。