C printf不打印特殊字符

C printf不打印特殊字符,c,printf,special-characters,C,Printf,Special Characters,我正在尝试制作一个简单的纸牌游戏,但是在从Win7切换到Xubuntu 14.04之后,即使是最简单的事情也不再有效了。我试了三天,还是解决不了。 发生的情况是,控制台给了我3个菱形问号,用于下面的代码 #include <stdio.h> #include <stdlib.h> #define herz "\xe2\x99\xa5" #define karo "\xe2\x99\xa6" #define kreuz "\xe2\x99\xa3" #def

我正在尝试制作一个简单的纸牌游戏,但是在从Win7切换到Xubuntu 14.04之后,即使是最简单的事情也不再有效了。我试了三天,还是解决不了。 发生的情况是,控制台给了我3个菱形问号,用于下面的代码

#include <stdio.h>
#include <stdlib.h>
#define herz    "\xe2\x99\xa5"
#define karo    "\xe2\x99\xa6"
#define kreuz   "\xe2\x99\xa3"
#define pik     "\xe2\x99\xa0"

int main()
{
char ch = '0';
printf("%c%c%c%c",herz,karo,kreuz,pik);
return 0;
}
控制台语言是
en_US.UTF-8


我试了几种字体,但一点也没变。我可以在控制台中手动键入特殊字符,但当C尝试打印它们时,它不起作用。

%C
用于打印单个字符。由于您正在尝试打印字符串,请改用
%s
。您的打印报表将被删除

wprintf("%s%s%s%s",herz,karo,kreuz,pik);

%c
用于打印单个字符。由于您正在尝试打印字符串,请改用
%s
。您的打印报表将被删除

wprintf("%s%s%s%s",herz,karo,kreuz,pik);

您已经定义了需要文字常量宽字符的文字常量字符串

然后需要使用
wprintf()
%lc
格式说明符打印:

wprintf("%lc%lc%lc%lc", herz, karo, kreuz, pikl) ;

您已经定义了需要文字常量宽字符的文字常量字符串

然后需要使用
wprintf()
%lc
格式说明符打印:

wprintf("%lc%lc%lc%lc", herz, karo, kreuz, pikl) ;

%c
不适用于字符串使用
%s
打印c字符串。这还取决于运行程序的终端。GCC应该警告
%c
格式的参数类型不正确。在这里发布问题之前,请务必消除警告。@HermannDesu:这并不丢脸,问题不应被关闭或删除。这是对SO知识库的有益贡献。
%c
不适用于stringsUse
%s
打印c字符串。这还取决于运行程序的终端。GCC应该警告
%c
格式的参数类型不正确。在这里发布问题之前,请务必消除警告。@HermannDesu:这并不丢脸,问题不应被关闭或删除。这是对SO知识库的有益贡献。但他想打印一个UTF-8字符。但他想打印一个UTF-8字符。这在gcc 4.1.2下不起作用。它表示“字符常量对于其类型来说太长了”。这在gcc 4.1.2下不起作用。它说“字符常量对于其类型来说太长”。