2017-05-07 19 views
2

我试图在Ubuntu上用C语言中的ncurses.h库在屏幕上定位一个星号unicode字符。我试图运行的代码如下:用ncurses打印一个很宽的unicode字符

#include <stdio.h> 
#include <wchar.h> 
#include <curses.h> 
#include <ncurses.h> 
#include <stdlib.h> 
#include <wctype.h> 
#include <locale.h> 

int main() { 
    setlocale(LC_CTYPE, ""); 

    initscr(); 
    cbreak(); 

    WINDOW *win = newwin(0, 0, 0, 0); 
    refresh(); 
    wrefresh(win); 

    const wchar_t* star = L"0x2605"; 
    mvaddwstr(3, 3, star); 

    getch(); 
    endwin(); 
} 

但我不断收到错误

implicit declaration of function ‘mvaddwstr’ [-Wimplicit-function-declaration] 

尽管此功能与类似的功能,我不能去被据可查here在一起工作。有没有一些图书馆我不包括做这项工作?还是有其他方法可以展示这个角色?我感谢任何帮助。

+0

[在C中打印Unicode符号]的可能重复(http://stackoverflow.com/questions/43834315/printing-a-unicode-symbol-in-c) –

回答

1

您必须编写针对 “窄” 的诅咒(ncurses的VS ncursesw)

我可以用下面的编译在Ubuntu上你的榜样16.04:

apt install libncursesw5-dev 

# --cflags expanded to: -D_GNU_SOURCE -I/usr/include/ncursesw 
gcc main.c $(ncursesw5-config --cflags) -c 
# --libs expanded to: -lncursesw -ltinfo 
gcc main.o $(ncursesw5-config --libs) -o main 

然后

./main 

我不得不对你的示例代码做如下差异:

- const wchar_t* star = L"0x2605"; 
+ const wchar_t* star = L"\x2605";