打印wchar_t会产生奇怪的输出

Mut*_*iti 3 c printf wchar-t format-specifiers

运行此代码段:

wchar_t *wstr = L"áßå®";
wprintf(L"%s",wstr);
Run Code Online (Sandbox Code Playgroud)

给出输出:

«

代替

áßå®

我是新来的wchar_t.我如何获得预期的输出?

Sou*_*osh 5

我相信,你需要改变你的代码

 wprintf(L"%s",wstr);
Run Code Online (Sandbox Code Playgroud)

wprintf(L"%ls",wstr);
Run Code Online (Sandbox Code Playgroud)

参考:从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转换说明符没有影响.