c - printw() 和 mvwprintw() 不打印

标签 c ncurses

我试图通过在每个新行打印一个字符串来测试 printw 和 mvwprintw。然而他们不打印任何东西。

这是终端上的输出:

gcc -c -g *.c
gcc *.o -o main.exe -lncurses
DBOJANTC-M-KDD5:ncursestest user22$ main.exe
DBOJANTC-M-KDD5:ncursestest user22$ 

如何使这些函数打印在屏幕或窗口上?

    int main() {

        char stuff[25] = "stuffstuff\n";
        int rows = 7;

        WINDOW* win;
        //int delwin(WINDOW *win);

        //printf("dddd\n");

        initscr();
        raw();
        noecho();
        printw("Try resizing your window(if possible) and then run this program again");
        win = newwin(rows, 80,  0, 0);


        for(int i = 0; i < rows; i++){

            mvwprintw(win, i, 0,"%s", stuff);

            wrefresh(win);
        }

    endwin();


    return 0;
}

最佳答案

printwmvwprintw 实际上正在打印。 只是您立即刷新窗口或关闭窗口,因此您看不到打印内容。

尝试在关闭或刷新窗口之前添加 getch

    for(int i = 0; i < rows; i++){

        mvwprintw(win, i, 0,"%s", stuff);
        getch();  //here
        wrefresh(win);
    }
getch();  //here
endwin();

或者甚至您可以使用 sleep

关于c - printw() 和 mvwprintw() 不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684870/

相关文章:

c - 编译-std=c90时,如何启用CYGWIN中<time.h>中的clock_gettime()声明?

c - 如何减少 NCurses C 应用程序中的输入延迟

c++ - 尝试使用 boost 和 ncurses 库编译程序时出现错误

c - 如何避免重写不变的文本片段

C printf 带有 %lu 的整数产生大数

c - fuse中如何正确添加线程

币种找零,以特定币种的类型作为返回值

java - 在 Java 上加载一个 dll 库

rust - 仅匹配有效的 UTF-8 字符

c - ncurses 中的 nodelay() 和 cbreak() 有什么区别?