gpt4 book ai didi

c - ncurses 和 getch - 处理删除和箭头字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:08 25 4
gpt4 key购买 nike

在 Linux 和 ncurses 下的 C 程序中,我需要从键盘(因此,从用户)获取字符并将它们存储到一个字符串中,只有当用户按 Enter。然而,与此同时,我需要为用户显示一个屏幕回显,以便他可以看到他正在写的内容,并在必要时纠正一些拼写错误。

我的一堆代码可以正常工作,但无法处理删除和箭头字符。

this问题 当按下 BackspaceDel 时,提供了正确存储 字符串的解决方案。但是可以选择什么解决方案来显示正确的屏幕回声,即使考虑到箭头键?

我的代码本质上是:

while(1)
{
if (getch() =! ERR)
// store the character into an array
if (getch() == 10)
// terminate the string and print it on screen
}

字符是通过getch()一个一个获取的。就像在链接的问题中一样,如果我不使用 noecho() 并按 Backspace,则会显示序列 ^? 而不是删除屏幕上的前一个字符。如果我使用 noecho(),程序应该向用户实时显示正在发生的事情。我应该在每个 while 周期重新打印字符串吗?这会很麻烦。

那么,我怎样才能正确地显示给用户发生了什么?

最佳答案

如果 OP 的程序使用了 keypad()功能,然后左光标(箭头)和删除键将具有相同的效果。 getnstr不支持行内编辑(在行内移动光标)。 (顺便说一下,curses 的其他实现对光标键没有任何作用)。

作为支持内联编辑的程序示例,dialog很有用(它适用于 UTF-8)。另一方面,因为它将响应存储为纯字符串,所以它比明确编写使用 wget_wch 的东西更复杂。 .

cdk不处理 UTF-8。

ncurses 没有提供更有趣的功能,因为:

  • 该功能已在 form 中图书馆
  • 它不符合 extension 的条件因为人们可以在不了解库内部结构的情况下轻松开发此类各种功能。

最近在 ncurses, print and contemporary acquire strings 中有一个相关问题(用于阻塞I/O) (同样,dialog 可以)。

关于c - ncurses 和 getch - 处理删除和箭头字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com