C 关闭“诅咒”窗口后如何返回正常模式
这是我的密码:C 关闭“诅咒”窗口后如何返回正常模式,c,curses,C,Curses,这是我的密码: #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=
#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;
}
我有一个while1循环,总是打印从屏幕上得到的任何东西
如果您输入open,它将打开一个curses窗口,并获得一个char。之后,它将退出诅咒窗口endwin,并且应该仍然在while1循环中
但我的问题是,在调用endwin之后,它不会返回到正常的printf/scanf循环
2、我可以再次输入open,再次打开一个新术语,但新术语仍然与我第一次输入open时创建的术语处于相同的位置,
实际上,每次我输入open时,都会在同一个位置创建一个术语,这意味着第一个open后面的命令将被取消。这可能会有帮助:
#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;
}
user@linux>
user@linux>
user@linux>