如何将非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。
答案 0 :(得分:2)
您应该使用wprintf
来打印宽字符串:
wprintf(L"%c\n", wc);
答案 1 :(得分:1)
我认为你对printf()
的调用因errno
中返回的“非法字节序列”错误而失败,至少这是MacOS X上使用上面的示例代码所发生的事情(如果使用的话) wprintf()
代替printf()
)。对我而言,当我在调用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。
答案 2 :(得分:0)
使用wprintf(&#34;%lc \ n&#34;,wc);你会得到你想要的输出