我想用printf制作一个控制台显示器,我定期在3个通道上获得一些输入,我想打印如下行:
Channel1 Last_message_1
Channel2 Last_message_2
Channel3 Last_message_3
当channel2上出现新消息时,我想覆盖控制台的那一部分。像:
Channel1 Last_message_1
Channel2 New_message_2
Channel3 Last_message_3
我知道这种东西可以用printf完成,但我不记得怎么做了。有什么指针吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
据我所知,你只能用printf改变最后一行,在这里你要改变任何一行,所以我认为你需要调查ncurses。
答案 2 :(得分:0)
您不能使用printf
移植。如果您的控制台支持它,您可以发送ANSI控制代码来定位光标 - 但ANSI控制代码相当笨拙,而且很多“控制台”不支持它们,在这种情况下,您将得到一个很多额外的垃圾与你想要产生的数据。
留下使用至少在理论上不可移植的东西。如果可移植性仍然很重要,那么我在那些中的直接选择可能就是ncurses - 它设计得相当合理,使用起来相当方便,并且具有合理的便携性。
如果我确定可移植性根本不重要而且我正在编写(例如)纯粹用于Windows,那么值得考虑使用本机控制台功能。可以说这很少是一个非常好的权衡 - 你失去了所有的可移植性,只获得了小的速度等等。
答案 3 :(得分:0)
printf ( "\033[2;1H"); // move to 2nd line