3

非ASCII文字をワイド文字に割り当ててコンソールに出力するにはどうすればよいですか? このコードダウンは機能しません:

#include <stdio.h>
int main(void)
{
    wchar_t wc = L'ć';
    printf("%lc\n", wc);
    printf("%ld\n", wc);
    return 0;
}

出力:

263
Press [Enter] to close the terminal ...

Windows 7 で MinGW GCC を使用しています。

4

3 に答える 3

2

wprintfワイド文字列を出力するには、次を使用する必要があります。

wprintf(L"%c\n", wc);
于 2013-03-04T16:42:36.740 に答える
1

あなたの呼び出しはprintf()で返された «Illegal byte sequence» エラーで失敗すると思います。errno少なくとも、上記のコード例 (およびwprintf()の代わりに使用した場合printf()) を使用した MacOS X では、これが発生します。私にとっては、呼び出しsetlocale(LC_ALL, "");の前に呼び出してprintf()、デフォルトで C ロケールの使用を停止すると機能します。

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
int main(void)
{
    wchar_t wc = L'ć';

    setlocale(LC_ALL, "");
    printf("%lc\n", wc);

    return 0;
}

どのプラットフォーム/コンパイラを使用しているか不明なので、YMMV.

于 2013-03-04T16:54:59.870 に答える
0

wprintf("%lc\n" ,wc); を使用します。そして、あなたはあなたの望む出力を得るでしょう

于 2013-03-04T16:52:44.467 に答える