使用 ncurses 打印宽 unicode 字符
Print a wide unicode character with ncurses
我正在尝试在 Ubuntu 上使用 C 中的 ncurses.h
库在屏幕上定位星号 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 以及我无法使用的类似功能。是否有一些我没有包括在内的图书馆来完成这项工作?还是有其他方式来展示这个角色?感谢您的帮助。
您必须针对 "narrow" curses(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";
我正在尝试在 Ubuntu 上使用 C 中的 ncurses.h
库在屏幕上定位星号 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 以及我无法使用的类似功能。是否有一些我没有包括在内的图书馆来完成这项工作?还是有其他方式来展示这个角色?感谢您的帮助。
您必须针对 "narrow" curses(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";