2017-05-07 61 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";