【发布时间】:2014-07-29 22:34:15
【问题描述】:
只是尝试使用 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 下的输出为:
字符是:.
Ɣ 等其他字符也不起作用。
我做错了什么?
【问题讨论】:
-
swprintf有一个大小作为第二个参数。您还必须包含wchar.h标准标题。 -
你是对的,但我认为我使用的是 Windows 版本的
swprintf,它不需要大小作为第二个参数。 -
我没有收到编译器错误,这表明我正在使用 Microsoft 的
swprintf。我认为windows.h也会自动包含在内。 -
@cdonts:不,不是。它可能由您的编译器假定,但不会自动包含在内。你没有收到关于使用没有正确原型(或类似)的函数的警告吗?
-
MinGW 的
stdio.h有以下评论:/* These differ from the ISO C prototypes, which have a maxlen parameter (like snprintf). */。似乎他们省略了它,因为他们尽可能多地使用msvcrt.dll函数。我很困惑。啧啧啧啧。