只是尝试使用 MinGW 在 C 中输出这个 unicode 字符 ☒
。我首先使用 swprintf
将其放入缓冲区,然后使用 wprintf
将其写入标准输出。
#include <stdio.h>
int main(int argc, char **argv)
{
wchar_t buffer[50];
wchar_t c = L'☒';
swprintf(buffer, L"The character is: %c.", c);
wprintf(buffer);
return 0;
}
Windows 8下的输出为:
The character is: .
Ɣ
等其他字符也不起作用。
我做错了什么?
最佳答案
您正在使用 %c
,但 %c
用于 char
,即使您在 wprintf() 中使用它
。使用%lc
,因为参数是whar_t
。
swprintf(buffer, L"The character is: %lc.", c);
这种错误通常应该被编译器警告捕获,但它并不总是发生。特别是,捕获此错误非常棘手,因为 %c
和 %lc
实际上 采用 int
参数,而不是 char
和 wchar_t
(区别在于它们如何解释 int
)。
关于c - 输出 unicode wchar_t 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026100/