ncurses-printw()不适用于长字符串(C)

时间:2018-11-02 10:20:32

标签: c ncurses

我正在尝试使用printw()打印一个长字符串,但是它只打印一些字符。就像这个功能只允许打印最大数量的字符。

这是我的代码的一部分:

 ...
 move(3,0);
 printw(result_2);
 sleep(1);
 ...

result_2的字符串很长,我知道它的字符串很长。

我要打印的字符串是有关txt文件的所有信息。

我尝试了其他函数,例如addstr(),但我遇到了同样的问题。有没有办法用ncurses打印长字符串?

这是我的字符串中的内容:

user: asdasdasd
user: holaaaa
user: asdsad
user: aw22
user: 2
user: 2
user: 2
user: 2
user: 22
user: 2
user: 2
user: 2
user: asdasd
user: holaaa
user: porfa
user: si
user: suuuuuuuuuuuuuuuuuu
user: no
user: no
user: lel
user: lkajsdkjasdkjasdkjasd

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您可能正在触及屏幕底部。除非您调用了以下命令,否则Ncurses不会滚动(或不允许终端滚动):

scrollok(stdscr, TRUE);

因此,输出可能会到达窗口的底部并停止在该位置。

您可能还想看看curses函数idlok

但是,这可能无法提供您真正想要的东西。 Ncurses不维护滚动缓冲区。它仅存储屏幕上实际显示的内容。如果要实现能够滚动长文本的CLI应用程序,则必须自己实现滚动逻辑,或者使用ncurses之上实现的小部件库之一(例如CDK)。 / p>