0

char配列を小文字のchar配列に変換する必要があります。また、Äのようないくつかの特殊文字をäに変換したいと思います。しかし、「ASCIIコード」196はASCII-128にはありません。どうすれば小文字に変換できますか?私はそれらを文字列初期化子として使用できますが、実際にはそれらのコードを処理できません。これがコンパイラオプションである可能性がある場合は、c99モードのないLinuxでEclipse CDTを使用しています(これは使用できません)。

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しません。

4

1 に答える 1

3

setlocaleについて読む必要があると思います(またはここ

tolower()を使用します

注: プログラムの起動中は、setlocale(LC_ALL、 "C");に相当します。ユーザーコードが実行される前に実行されます。

環境のデフォルトロケールを試すことができます(または、わかっている場合は正しいロケールを選択してください)。

setlocale(LC_ALL, "");
于 2013-01-25T10:30:09.893 に答える