gpt4 book ai didi

c - 关闭curses窗口后如何返回正常模式

转载 作者:行者123 更新时间:2023-11-30 18:03:32 25 4
gpt4 key购买 nike

这是我的代码:

#include <ncurses.h>
#include <string.h>
int main() {
char str[120];
char c;
while (1) {
printf("%s", ">");
scanf("%s", str);
if (!strcmp(str, "open")) {
initscr();
c=getch();
endwin();
printf("from curses window %c\n",c);
}
printf("%s\n", str);
}
return 0;
}

我有一个 while(1) 循环,它总是打印从屏幕上获得的任何内容。

如果你输入“open”,它会打开一个curses窗口,并得到一个char。之后它将退出诅咒窗口 (endwin()),并且仍应处于 while(1) 循环中。

但我的问题是,调用 endwin() 后,它不会返回到正常的 printf()/scanf() 循环。

最佳答案

#include <stdio.h>
#include <curses.h>
#include <term.h>
#include <string.h>
#include <stdlib.h>

int main() {
char str[120];
char c;
FILE *file_id;
while (1) {
printf("%s", ">");
scanf("%s", str);
if (!strcmp(str, "open")) {
file_id = fopen("/dev/tty", "r+");
SCREEN *termref = newterm(NULL, file_id, file_id);
//cbreak();
echo();
keypad(stdscr, TRUE);
getstr(str);
delscreen(termref);
printf("from curses window %s\n", str);
}
printf("%s\n", str);
}
return 0;
}

现在源代码升级到这个,仍然有两个问题

1,打开和关闭一次term后,可以回到正常循环,但是当我按回车时,提示不会在左侧对齐,就会像这样,

user@linux>
user@linux>
user@linux>

2、我可以再次输入“open”,再次打开一个新术语,但新术语仍然与我第一次输入“open”时创建的术语处于同一位置,实际上,每次我输入 open 时,都会在同一位置创建一个术语,这意味着第一个 open 后面的命令将消失。

关于c - 关闭curses窗口后如何返回正常模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339676/

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