printf控制台格式化

时间:2011-04-01 17:42:29

标签: user-interface console printf

我想用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完成,但我不记得怎么做了。有什么指针吗?

4 个答案:

答案 0 :(得分:0)

这篇文章可能有用:

print to screen from c console application overwriting current line

特别回答#2(不是所选答案)

答案 1 :(得分:0)

据我所知,你只能用printf改变最后一行,在这里你要改变任何一行,所以我认为你需要调查ncurses

答案 2 :(得分:0)

您不能使用printf移植。如果您的控制台支持它,您可以发送ANSI控制代码来定位光标 - 但ANSI控制代码相当笨拙,而且很多“控制台”不支持它们,在这种情况下,您将得到一个很多额外的垃圾与你想要产生的数据。

留下使用至少在理论上不可移植的东西。如果可移植性仍然很重要,那么我在那些中的直接选择可能就是ncurses - 它设计得相当合理,使用起来相当方便,并且具有合理的便携性。

如果我确定可移植性根本不重要而且我正在编写(例如)纯粹用于Windows,那么值得考虑使用本机控制台功能。可以说这很少是一个非常好的权衡 - 你失去了所有的可移植性,只获得了的速度等等。

答案 3 :(得分:0)

printf ( "\033[2;1H");     // move to 2nd line