gpt4 book ai didi

c - 删除已在 ncurses 终端中打印的字符

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:15 25 4
gpt4 key购买 nike

我正在用 ncurses 编写一个文本编辑器。该程序以原始模式初始化。所以我需要手动做很多事情,比如删除,避免打印不可打印的字符等。

删除:

void console(ch)
{
if(ch == 8) //8 = backspace according to asciitables.com
{
printw("\b");
printw(" ");
}
else
{
addch(ch);
}
}

为了避免不可打印的字符:

    void console(ch)
{
bool safe = TRUE;
int avoid[] = { 1,2,3,4,5,6,7,8};
for(int i=0;i<4;i++)
{
while(ch==avoid[i])
{
safe = false;
}
}
if(safe)
{
printw("%c",ch); //Prints the key's characters on the screen.
}
else
{
break;
}
}

在删除的时候,我想删除终端中之前打印的字符,并插入一个空格,将光标移回上一个字符的位置。但这不起作用。

在avoid non-printable character中,我想避免打印不可打印的字符,只打印可打印的字符。但这似乎也行不通。

如果有人指出我错误的地方并纠正我,那将非常有帮助。如果有人能告诉我 ncurses 库中是否有任何特定功能,这也会很有帮助。我对 ncurses 还很陌生。

最佳答案

在 curses 中检测“不可打印”字符的最简单方法是检查 unctrl 的结果.如果字符是可打印的,则结果是单个字符。否则就是两个或多个字符:

char *check = unctrl(ch);
int safe = (check != 0 && strlen(check) == 1);

(manual page 有一些细节)。

顺便说一句,addchprintw 更适合打印字符(但请记住,它的参数是 chtype,适合 int,而不是 char)。同样,手册页对于准备您的程序很有用。

关于c - 删除已在 ncurses 终端中打印的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604135/

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