如何避免重写不变的文本

时间:2019-01-20 17:51:07

标签: 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应用程序中未更改的文本?

1 个答案:

答案 0 :(得分:2)

使用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