gpt4 book ai didi

c - 使用 ncurses 编写文本

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

我正在尝试使用 ncurses 创建一个简单的文本编辑器,以便用户可以编辑一行,但我似乎无法弄清楚如何让它工作。

这是我目前的情况

void initWindow(){

int posx = 0, posy = 0, ncol = 45, pos = 0;;
int ch;
char string[ncol];
memset(string, '*', ncol);



while(1){

initscr();
clear();
noecho();
cbreak();
keypad(stdscr, TRUE);


mvprintw(0,0, "%s", string);
move(0, pos);
ch = getch();

switch(ch){

case KEY_RIGHT:
if(pos < ncol)
pos++;

break;

case KEY_LEFT:
if(pos > 0)
pos--;

break;

case KEY_DC:
memmove(&string[pos], &string[pos + 1], strlen(string));
break;

case KEY_BACKSPACE:

if(pos > 0 && pos < ncol){
memmove(&string[pos-1], &string[pos], strlen(string));
move(0,pos--);
}
break;

case 10:
clear(); /*ENTER*/
mvprintw(0,0,"Linha: %s\n", string);

getch();
return;

case 27:
clear(); //ESCAPE
return;

default:

if(ch > 31 && ch < 127 && string[ncol - 1] == '\0' && pos < ncol && pos > 0){
memmove(&string[pos+1], &string[pos], ncol -pos);
string[pos] = ch;
pos++;
}
break;
}
}

}

它输出这个

*********************************************~[B

而且我什至不能写任何东西,尽管退格键和删除键可以使用。

我想知道如何才能写出简单的文字?

有人可以解释为什么它会在输出末尾输出垃圾字符吗?

谢谢

编辑:main 函数调用此函数,这里是请求的#includes

#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>
#include <string.h>

EDIT2:还是没弄明白,谁能帮忙?

最佳答案

一个指针,您正在 while 循环中使用 initscr()。这意味着您要重新初始化并发现循环的每次传递的终端类型。你应该这样做一次。

此外,initscr() 会在任何进一步处理之前进行初始清除,因此不需要 initscr() 之后的 clear() .

如果您避免过度重新初始化系统,您的终端输出可能会有所改善。

关于c - 使用 ncurses 编写文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53017522/

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