我想打印在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