如何读取ncurses中打印垫上的文本行?我正在尝试使用 ncurses
函数 winchnstr
. 我对如何在函数中使用 chtype*
感到困惑 . 我知道 chtype
是 long 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 回答
winchnstr 添加尾随空值,并且您已经要求它返回与数组中适合的字符数一样多的字符 . 所以这是在数组末尾的解决方案 .
manual page说
winchnstr 返回 chtype 值,其中包含与视频属性相结合的字符 . 您无法直接将 chtype 数据数组转换为字符串 . 但是curses有一个函数winnstr,它只返回一个字符串(没有视频属性) . 同样,请记住,尾随的空值不包含在为函数指定的长度中 .
以下是用于提取人们使用的字符的代码 .
然后,y将保持光标下的字符 .