c - 输出 unicode wchar_t 字符

标签 c unicode mingw

只是尝试使用 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 参数,而不是 charwchar_t(区别在于它们如何解释 int)。

关于c - 输出 unicode wchar_t 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026100/

相关文章:

c# - 如何在c dll中使用assert

ruby-on-rails - 处理 ruby​​ 1.8.7 中不同类型的 utf 连字符

python - 在python中过滤非法xml unicode字符的快速方法?

c++ - Windows服务和mingw

c++ - 如何使用 CoCreateInstance() 获取 com 对象?

c - 这个静态分配的结构数据如何在函数外部可用?

c - 如何在 C 中将指针重新分配给较小的数组?

c++ - Oracle OCI 将无效的 UTF8 字符更改为 U+FFFD

c++ - 为什么需要 Cygwin 和 MinGW?

c - 尝试扩展 golang Pigpio 包装函数 gpioWaveAddGeneric