跳至主要内容

博文

目前显示的是 十二月, 2020的博文

ncurses与readline结合

  #define _XOPEN_SOURCE 700       /* for wcswidth and 700 is for mbsnrtowcs */ #include<wchar.h> #include<ncurses.h>       /* ncurses.h includes stdio.h */ #include<stdlib.h> #include<string.h> #include<readline/readline.h> #include<locale.h>     int mygetstr( char *str, int y, int x){    WINDOW *win;    int size, col;    int ok = 0;    int width;    wchar_t wstr[80];    char *p;        getmaxyx(stdscr, size, col);        void getaline( char *s){      str = s;      rl_callback_handler_remove();      ok = 1;    }        rl_callback_handler_install( "" , getaline);    win = newwin(1, col-x, y, x);    while (1){      rl_callback_read_char();      if (ok)        break ;      werase(win);      strncpy (str, rl_line_buffer, 80);      p = str;      /* how many column chars before cursor occupies? */      size = mbsnrtowcs(wstr, ( const char **)&p, rl_point, 80, NULL);      width = wcswidth(wstr, size);      mvwprintw(win, 0, 0, &qu