This topic created in 3159 days ago, the information mentioned may be changed or developed.
有的程序运行时需要实时显示当前的状态,用 print 类的函数会导致整个窗口全是字符,不够清楚简洁。
简单来说就是类似于 top 命令,能够动态刷新窗口内容,同时不会残留以前的字符的效果是怎么实现的?
Supplement 1 Sep 2, 2017 好吧,又去了解了一下,发现其实不说 flush 的问题,是 \r 的作用。
不过 \r 只能让光标回到行首,并不会清空整行内容。因此,若后输出的内容长度小于先前输出的内容,那么还是会有先前内容的残余,网上说再用 /b 清楚,但是我发现这个 \b 字符在 windows 和 linux 环境下是不同的。
同时,这个有个很大的缺陷:
多行同时更新是无法实现的……估计得靠 command gui 之类的库了。
这里面的学问很多,真的能玩出花来。
Supplement 2 Sep 2, 2017 刚刚打的错别字有点多,又了解了一下,这门“学问”叫:TUI (指文本用户界面)。
6 replies 2017-09-03 07:57:33 +08:00  | | 1 jessynt Sep 2, 2017 1 Just flush it. |
 | | 2 nazor Sep 2, 2017 @ jessynt 谢谢!感谢指明了搜索关键词,哈哈。 flush stdout 即可实现。 |
 | | 3 geelaw Sep 2, 2017 via iPhone img src="http://www.v2ex.com/static/img/heart_20250818.png?v=c3415183a0b3e9ab1576251be69d7d6d" width="14" align="absmiddle" alt="" /> 1 输出退格可以回到本行之前的位置 |
 | | 4 ysc3839 Sep 2, 2017 via Android 我没具体了解过,不过可以用 ASCII 控制字符定位光标,输出就覆盖掉了。不过 Windows 内置控制台直到 Win10 才开始支持这种,之前要用 Windows 的控制台 API 来定位。 |
 | | 5 tkpc Sep 2, 2017 printf("%-80s","abcd") |
 | | 6 msg7086 Sep 3, 2017 1 curses library 么? |