我如何阅读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);

最佳答案

winchnstr添加一个尾随null,并且您已经要求它返回数组中容纳的尽可能多的字符。这样就解决了数组末尾的问题。

manual page


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


winchnstr返回chtype值,该值具有与视频属性组合的字符。您不能直接将chtype数据数组转换为字符串。但是curses具有函数winnstr,该函数仅返回字符串(不包含视频属性)。同样,请记住,为函数指定的长度中不包括结尾的null。

09-11 19:27