我想打印在C这个中等色调统一盒unicode的盒子:▒打印用C
(我做的练习以K & R和结果得到的是牵制在一个有关使直方图...)。我知道我的unix术语(Mac OSX)可以显示该框,因为我用该框保存了一个文本文件,并使用cat textfilewithblock
并打印该块。
到目前为止,我最初尝试:
#include <stdio.h>
#include <wchar.h>
int main(){
wprintf(L"▒\n");
return 0;
}
并没有打印任何
iMac-2$ ./a.out
iMac-2:clang vik$
我做了搜索,发现这一点:unicode hello world for C?
而且好像我还是要设置locale(即使utf8中的执行环境?我仍然试图找出为什么这一步是必要的)但无论如何,它的工作原理! (后有点奋斗终于实现了正确的字符串为en_US.UTF-8
,而不是,我曾在其他地方见过en_US.utf8
...)
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(){
setlocale (LC_ALL, "en_US.UTF-8");
wprintf(L"▒\n");
return 0;
}
输出如下:
iMac-2$ ./a.out
▒
iMac-2$
但是当我尝试下面的代码...放在UTF-8十六进制(我从这里得到:http://www.utf8-chartable.de/unicode-utf8-table.pl?start=9472&unicodeinhtml=dec)这是盒子的0xe29692,而不是粘贴在盒子本身,它不再工作。
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(){
setlocale (LC_ALL, "en_US.UTF-8");
wchar_t box = 0xe29692;
wprintf(L"%lc\n", box);
return 0;
}
我明显错过了一些东西,但无法弄清楚它是什么。
我应该注意到,我正在使用以下编译器命令:'cc --std = c11' – RandomUser762
可能会有帮助:http://stackoverflow.com/q/12017342/2476755 – royhowie
在Mac OSX上, t需要'wchar.h','wprintf'或'L'前缀或'setlocale'。如果你想打印一个盒子,只需打印一个盒子:'printf(“▒\ n”);' – user3386109