Я только что узнал о 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;
}
Что я могу сделать, чтобы решить эту проблему?