1

Cでいくつかのunicode (4 桁の 16 進数) 文字を出力します。

これらの文字は、いくつかの短い int変数に保存しました。以下は、私の目的のために使用することになっているコードです。

#include <stdio.h>
#include <locale.h>
#include <wchar.h>

int main(void) {
    
    setlocale(LC_ALL,"");

    short a = 0x099A, b = 0x09BE;
    wchar_t *string1 = (wchar_t *) calloc(20, sizeof(wchar_t));
    sprintf(string1, "\\u%04x\\u%04x", a, b);
    printf(" %s ", string1);

    wchar_t *string2 = (wchar_t *) calloc(20, sizeof(wchar_t));
    strcpy(string2, (wchar_t *) "\u099A\u09BE");
    printf(" %s \n", string2);

    return 0;
}

問題は次のとおりです。

string2はターミナルで正しい出力を表示していますが、string1そうではありません。

しかし、私は最初のアプローチを使用する必要があります。つまり、ユニコード文字をいくつかの任意の変数に格納しており、それらを画面に出力する方法が必要です。

どんな提案でも高く評価されるべきです。

4

1 に答える 1

3

変数に格納された Unicode 文字を表示するには、それらを変換してwchar_t使用してみませんwprintfか。

wchar_t ac = a;
wchar_t bc = b;

wprintf(L"%c%c", ac, bc);
于 2012-08-18T09:12:02.810 に答える