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

标签 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

谢谢!

最佳答案

我认为您可能正在点击屏幕底部。 Ncurses 不会滚动(或允许终端滚动),除非您调用:

scrollok(stdscr, TRUE);

所以输出可能到达窗口底部并停在那里。

您可能还想了解一下curses 函数idlok

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

关于c - ncurses - printw() 不适用于长字符串 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53116662/

相关文章:

c - "Initializer element is not constant"在 Linux GCC 中无故出错,编译 C

c++ - 使用 addch 获得意想不到的字符

c++ - 如何使用 ncurses 构建复杂的 "graphics"?

c - x64 参数和返回值调用约定

c - linux 上的段错误-在 windows 上工作

c - WM_SIZE 消息是否被发送到消息队列?

linux - 为什么 ld 找不到 libcurses.so,即使它在 `/usr/lib` 目录中?

c - SDL2在C中转换SDL1.2代码,如何滚动窗口,以前的SDL_BlitSurface

user-interface - 如何做 ncurses 等。人。工作?

C程序垂直线不在窗口内打印(方形)