删除当前端子输入线

问题描述 投票:0回答:1

我正在尝试在Linux上的C语言中编写一些控制台聊天程序。

到目前为止,我的编码方式是两个聊天伙伴只能交替发送/接收,因为默认情况下这些函数调用处于阻塞状态。

现在,我想修改该程序,以便两者都可以同时发送和接收。

我发现的问题是,一旦您在终端上输入了一些输入,就不弄乱终端的当前输入行,我不知道如何输出收到的消息。

如果有删除当前输入行的方法,则可以暂时保存该行,打印新消息,然后将输入行放回原位。

但是,我无法在互联网上找到此问题的解决方案。

是否可以删除当前输入行,如果不能删除,我还能如何实现我想要的?

c terminal chat stdout stdin
1个回答
0
投票

我认为您应该像Edd在评论中所说的那样调查ncurses。它可以让您轻松地管理终端窗口中的内容,这对于您的聊天程序来说似乎是个好主意。您需要做的就是将您的消息存储在2个字符数组中:

char incoming[MSG_MAX]char outgoing[MSG_MAX]

然后,您可以在终端窗口中的任何位置输出这些消息,因为ncurses允许您在放置文本的位置上指定x,y坐标。然后,一个简单的ncurses erase()族函数之一的包装程序将允许您从终端窗口的指定x,y坐标中删除字符。

© www.soinside.com 2019 - 2024. All rights reserved.