只是尝试使用 MinGW 在 C 中输出这个 unicode 字符\xe2\x98\x92。我首先使用 将其放在缓冲区中swprintf,然后使用 将其写入标准输出wprintf。
#include <stdio.h>\n\nint main(int argc, char **argv)\n{\n wchar_t buffer[50];\n wchar_t c = L\'\xe2\x98\x92\';\n\n swprintf(buffer, L"The character is: %c.", c);\n wprintf(buffer);\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\nWindows 8下的输出是:
\n\n\n\n\n角色是: 。
\n
其他字符如也\xc6\x94不起作用。
我做错了什么?
\n您正在使用%c, 但%cis for char,即使您使用 from wprintf()。使用%lc,因为参数是whar_t.
swprintf(buffer, L"The character is: %lc.", c);
Run Code Online (Sandbox Code Playgroud)
这种错误通常应该被编译器警告捕获,但它并不总是发生。特别是,捕获此错误非常棘手,因为%c和%lc 实际上都采用int参数,而不是char和wchar_t(区别在于它们如何解释int)。