无法在C中将希腊语转换为拉丁字符

时间:2018-02-09 13:10:27

标签: c string char

我正在编写一个将希腊字符变成拉丁字符的程序。这是简化版的代码:

#include "stdio.h"

int main(void) {
  char list1[]="αβ",list2[]="ab",ch='p';
  printf("Gimme string: ");
  while(ch!='\n')
  {
    ch=getchar();
    for(int i=0;i<2;i++){
        if(ch==list1[i]){
          printf("%c",list2[i]);
          break;
        }
      }
  }
  return 0;
}

如果我的输入是“αβ”,它应该输出“ab”但输出“aba”。我也尝试使list1成为一个二维数组,但它仍然不起作用。

1 个答案:

答案 0 :(得分:3)

α和β不是LATIN1。如果您的文件采用UTF-8编码,则这些字符需要多个字节,而if语句将无法正常工作。在这种情况下,您必须比较子字符串而不是简单字符。