c-在提示上方打印聊天信息



对于我的情况,假设Tim和Bob正在使用我的C聊天客户端和服务器聊天。我的聊天客户端和服务器是在bash终端上执行的。此聊天程序的光标是~键。

Tim给Bob发了一条信息,上面写着:"嘿"。现在假设Bob在给Tim输入消息时收到了这条消息。Bob想把"Hello">发给Tim,但他还没有写完(所以到目前为止他只写了《Hel》)。

我希望我的应用程序能够将Bob的提示和他的输入保持在终端的底部,并在提示上方显示Tim的消息。Bob应该仍然能够完成他给Tim的信息,并且能够看到Tim的消息。下面是从Bob的客户的角度说明我的意思的图表。有没有什么方法可以用C来完成这样的事情?

之前之后

...............................                 .................................
...............................                 <Tim> Hey
Enter Message> Hel~                             Enter Message> Hel~

如果你知道你使用的是ANSI兼容的终端,并且知道你的提示长度和光标位置(假设你允许编辑输入,这样光标就不会在当前输入的末尾),并且不允许超过一行的输入[很多假设],那么你似乎可以输出一个或多个"光标向上"序列,然后回车,你从Tim发来的信息,回车,换行,然后用很多"光标右键"序列把光标放回原来的位置。

不过,基本上,如果你想处理这种复杂的问题,那么你需要使用curses/ncurses/terminfo类型的库。