Printing a Unicode Symbol in C

c, ncurses, unicode

Solution

Two problems: first of all, a `wchar_t` must be printed with `%lc` format, not `%c`. The second one is that unless you call `setlocale` the character set is not set properly, and you probably get `?` instead of your star. The following code seems to work though:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main() {
    setlocale(LC_CTYPE, "");
    wchar_t star = 0x2605;
    wprintf(L"%lc\n", star);
}

And for `ncurses`, just initialize the locale before the call to `initscr`.

Problem

I'm trying to print a unicode star character (0x2605) in a linux terminal using C. I've followed the syntax suggested by other answers on the site, but I'm not getting an output: ``` #include <stdio.h> #include <wchar.h> int main(){ wchar_t star = 0x2605; wprintf(L"%c\n", star); return 0; } ``` I'd appreciate any suggestions, especially how I can make this work with the `ncurses` library.

Original source