printf不打印特殊字符

时间:2016-01-10 14:38:43

标签: c printf special-characters

我试图制作一个简单的纸牌游戏但是从Win 7切换到Xubuntu 14.04后,即使是最简单的东西也不再有用了。我尝试了3天,仍然无法解决。 接下来的代码是控制台给我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;
}

我尝试使用代码:blocks console和xubuntu。

(xterm -T $TITLE -e and xfce4-terminal -T $TITLE -x)

Console LANG为en_US.UTF-8

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

2 个答案:

答案 0 :(得分:3)

%c用于打印单个字符。由于您尝试打​​印字符串,请改用%s。您的打印声明将是

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

答案 1 :(得分:1)

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

const wchar_t herz = L'\ue299a5';

然后,您需要使用wprintf()格式说明符{/ 1>}进行打印:

%lc