c - 如何避免重写不变的文本片段

标签 c ncurses

我开发了一个简单的 NCurses 应用程序,用于调试目的。它不断地在终端窗口上打印和更新一些变量及其值。

我正在使用 printw 函数打印变量名称及其值,如下所示:

while( ... )
{
    clear();

    printw("var_1: %d\n", var_1);
    printw("var_2: %d\n", var_2);
    printw("var_3: %d\n", var_3);
    ...

    refresh();
}

这会产生如下输出:

var_1: 10
var_2: 20
var_3: 30
...

由于这段代码在一个循环中,我不断地重写整个屏幕,包括变量名和它们的值。

请注意,唯一需要更新的数据是值,因为变量名称始终相同,因此无需在每次迭代时一遍又一遍地重写它们。

我怎样才能避免重写在我的 NCurses 应用程序中没有改变的文本片段?

最佳答案

使用 NCurses,您的屏幕区域只是一个二维网格。您可以使用 mvprintw()

在屏幕的任何位置打印

所以首先在给定位置打印固定文本,然后,在你的循环中,在相应的值位置打印值:

mvprintw( x, y,   "var_1:" );
mvprintw( x, y+1, "var_2:" );
while( ... )
{
/// compute values
   mvprintw( x+6, y,   value1 );
   mvprintw( x+6, y+1, value2 );
}

Reference

关于c - 如何避免重写不变的文本片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54279237/

相关文章:

c++ - 查看 Win32 消息

c - 将 Unicode/UTF8 字符添加到 C 中的 ncurses 显示

c++ - 如何在ncurses C++中绘制坐标

c - C 中的日期/时间到 time_t

c - 一个接受 void func(void) 和 void func(void* param) 的函数

c++ - UTF-8 字符的属性

linux - CMake 找不到 Curses

c++ - NCurses:在堆叠顺序的中间插入面板

c - 具有 union 和位域的结构的大小

c - 传递指向函数的指针