首页 文章

用ncurses从屏幕上读一行

提问于
浏览
0

如何读取ncurses中打印垫上的文本行?我正在尝试使用 ncurses 函数 winchnstr . 我对如何在函数中使用 chtype* 感到困惑 . 我知道 chtypelong int ,但是当我在我的代码中使用 chtype 时,我得到一个段错误 . 在下面的示例中, long int y 打印20.我需要能够读取打击垫上的一行文本 . 有人可以告诉我该怎么做吗?

long int p[20];
wmove(pad,prow,ccol);
long int y = winchnstr(pad, p,20)&A_CHARTEXT;

编辑:

每当我从函数打印返回时,我都会得到返回的字符数 . 我很迷惑 . 如何将其转换为可打印的字符串?

fprintf(file,"%d",y);

2 回答

  • 0

    winchnstr 添加尾随空值,并且您已经要求它返回与数组中适合的字符数一样多的字符 . 所以这是在数组末尾的解决方案 .

    manual page

    以n为最后一个参数的四个函数返回一个前导子字符串,最多n个字符长(不包括尾部(chtype)0) .

    winchnstr 返回 chtype 值,其中包含与视频属性相结合的字符 . 您无法直接将 chtype 数据数组转换为字符串 . 但是curses有一个函数winnstr,它只返回一个字符串(没有视频属性) . 同样,请记住,尾随的空值不包含在为函数指定的长度中 .

  • 0

    以下是用于提取人们使用的字符的代码 .

    chtype p[150];
    winchstr(pad, p);
    char y = p[0] & A_CHARTEXT;
    

    然后,y将保持光标下的字符 .

相关问题