【发布时间】:2010-12-16 01:22:20
【问题描述】:
我刚刚学习 C 并得到了一项任务,我们必须将纯文本翻译成摩尔斯电码并返回。 (我最熟悉 Java,所以请耐心等待我使用的术语)。
为此,我有一个包含所有字母字符串的数组。
char *letters[] = {
".- ", "-... ", "-.-. ", "-.. ", ".", "..-." etc
我写了一个函数来返回所需字母的位置。
int letter_nr(unsigned char c)
{
return c-97;
}
这是可行的,但分配规范需要处理瑞典变音字母 åäö。瑞典语字母与英语相同,最后是这三个字母。我尝试检查这些,如下所示:
int letter_nr(unsigned char c)
{
if (c == 'å')
return 26;
if (c == 'ä')
return 27;
if (c == 'ö')
return 28;
return c-97;
}
不幸的是,当我尝试测试这个函数时,这三个函数的值都相同:98。这是我的主要测试函数:
int main()
{
unsigned char letter;
while(1)
{
printf("Type a letter to get its position: ");
scanf("%c", &letter);
printf("%d\n", letter_nr(letter));
}
return 0;
}
我能做些什么来解决这个问题?
【问题讨论】:
-
我也有 OS X。我的波兰语字母也有同样的问题 :)
标签: c xcode macos character-encoding