c - 如何避免重写不改变的文本片段
问题描述
我开发了一个简单的 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 );
}
推荐阅读
- javascript - 使用 Browserify 编译 NPM 包
- neo4j - 如何匹配具有超过 1 个指定关系的节点
- r - 如何在 R 中使用 library(maps) 和 ggplot 绘制东非(肯尼亚、乌干达和坦桑尼亚)地图?
- ssis - dat 文件导入到 sql server
- java - 如何在 Android 的 Cloud Firestore 中修补 JSON?
- java - 如何在 Windows 10 中计算 Java 代码的能耗(焦耳)
- python - 使用包的 Python 项目中的 ModuleNotFoundError
- java - 更改位置引擎请求间隔
- python - Doc2Vec - 在测试数据中查找文档相似性
- rust - 将非静态生命周期传递给 Rocket 的管理