打印wchar_t会产生奇怪的输出

时间:2015-06-04 07:48:43

标签: c printf wchar-t format-specifiers

运行此代码段:

wchar_t *wstr = L"áßå®";
wprintf(L"%s",wstr);

给出输出:

  

«

而不是

  

áßå®

我是wchar_t的新手。如何获得预期的输出?

1 个答案:

答案 0 :(得分:5)

我相信,您需要更改代码

 wprintf(L"%s",wstr);

wprintf(L"%ls",wstr);

参考:从C11标准,章节§7.29.2.1,强调我的

  

l(ell)
指定以下d,i,o,u,x或X转换说明符适用于long int或unsigned long int参数;以下n转换说明符适用于指向long int参数的指针;以下c转换说明符适用于wint_t参数; 以下s转化说明符适用于指向wchar_t参数的指针; 或对后续a,A,e,E,f,F,g无效或G转换说明符。