2013-01-25 40 views
0

我需要将字符数组转换为小写字符数组。我也想将一些特殊字符如Ä转换为ä。但是“ASCII-Code”196不在ASCII-128中。我如何将它们转换为小写?我可以使用它们作为字符串初始化程序,但不能真正处理它们的代码。如果这可能是一个编译器选项,我在没有c99模式的Linux上使用eclipse CDT(不能使用那个)。Ansi C - 将字符串转换为小写字符串

char* toLowerCase(char* text) 
{ 
    int length = strlen(text); 
    char* result = malloc(length); // malloc adds the 0 automatically at result[length] 
    int i; 
    for (i = 0; i < length; i++) 
     if ((text[i] >= 65) && (text[i] <= 90)) 
      result[i] = text[i] | 32; 
     else 
      result[i] = text[i]; 
    return result; 
} 

toLowerCase("hElLo WoRlD ÄäÖöÜü"); 
// result is "hello world ÄäÖöÜü" 

tolower()ctype.h没有做,要么。

+3

除了是完全不可移植的,这进一步被完全扩展了苦难非高asci友好。而且你不能使用基于标准的编译器* *只有* 14岁?我敢打赌你的教授真的很受欢迎。 – WhozCraig

+1

您的返回字符串没有终止。 – unwind

+4

在进行任何进一步处理之前,请仔细阅读[绝对最低限度的每位软件开发人员,绝对肯定地肯定Unicode和字符集(无借口!)](http://www.joelonsoftware.com/articles/Unicode.html)字符。 – pmg

回答

3

我认为你需要阅读有关setlocale,(or here

,并使用tolower的()

注:在程序启动时,的setlocale(LC_ALL相当于, “C” );在任何用户代码运行之前执行。

你可以试试环境的默认语言环境(或选择正确的,如果你知道的话):

setlocale(LC_ALL, ""); 
相关问题