首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除当前终端输入行

删除当前终端输入行
EN

Stack Overflow用户
提问于 2020-01-15 18:35:28
回答 1查看 64关注 0票数 0

我正在尝试在linux上用C语言编写一个小的控制台聊天程序。

到目前为止,我对它的编码方式是,聊天双方只能交替发送/recv,因为这些函数调用在默认情况下是阻塞的。

现在我想修改这个程序,以便两者都能够同时发送和接收。

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

如果有一种方法可以删除当前输入行,您可以临时保存该行,打印新消息,然后将输入行放回原处。

然而,我在互联网上找不到解决这个问题的方法。

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

EN

回答 1

Stack Overflow用户

发布于 2020-01-15 19:32:18

我认为你应该研究一下ncurses,就像Edd在他的评论中说的那样。它可以让你轻松地管理终端窗口中的内容,这听起来是一个很好的聊天程序的想法。你需要做的就是将你的消息存储在2个字符的数组中:

char incoming[MSG_MAX]

char outgoing[MSG_MAX]

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

编辑:MSG_MAX不是实际的ncurses宏。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59749591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档