Я пытаюсь напечатать это средний оттенок Юникод окна в C: ▒Печать окна Юникода в 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 hex (который я получил отсюда: 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