我如何阅读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);
最佳答案
winchnstr
添加一个尾随null,并且您已经要求它返回数组中容纳的尽可能多的字符。这样就解决了数组末尾的问题。
manual page说
四个以n作为最后一个参数的函数,返回最长为n个字符的前导子字符串
(不包括结尾的(chtype)0
)。winchnstr
返回chtype
值,该值具有与视频属性组合的字符。您不能直接将chtype
数据数组转换为字符串。但是curses具有函数winnstr
,该函数仅返回字符串(不包含视频属性)。同样,请记住,为函数指定的长度中不包括结尾的null。