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>