ncurses printw() 不会将任何内容打印到 window

ncurses printw() doesn't print anything into window

我正在尝试创建一个 window 并使用 ncurses 向其中打印一些文本,但我只是得到一个空白屏幕。我认为 printw() 不起作用,因为我能够在不同的程序中以相同的顺序打开具有相同功能的工作 window。

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <unistd.h>

char string[] = "string";

int main(void)
{
    system("clear");
    int c;
    initscr();
    curs_set(0);
    noecho();
    keypad(stdscr, TRUE);
    cbreak();
    WINDOW *game_window;
    game_window=newwin(40,40,1,1);
    int num=0, highs=0;
    while (TRUE) {
        clear();
        printw("\t%s\n", string);
        printw("\tScore: %d    High Score: %d\n", num, highs);
        sleep(1);
        break;
    }
    endwin();
    printf("done\n");
    return 0;
}

由于您要在 game_window 中打印此内容(我相信这是您的意图),请使用 wprintw 而不是 printw :

wprintw(game_window, "\t%s\n", string);
wprintw(game_window, "\tScore: %d    High Score: %d\n", num, highs);

此外,不要忘记 ncurses 要求您 刷新 windows:

refresh(); // main screen
wrefresh(game_window); // game_window window

这应该有所帮助!这是完整的代码,所以你知道我放在上面的位置 ;)

#include <stdio.h>
#include <stdlib.h>
#include <curses.h>
#include <unistd.h>

char string[] = "string";

int main(void)
{
    system("clear");
    int c;
    initscr();
    curs_set(0);
    noecho();
    keypad(stdscr, TRUE);
    cbreak();
    WINDOW *game_window;
    game_window=newwin(40,40,1,1);
    int num=0, highs=0;
    while (TRUE) {
        clear();
        wprintw(game_window, "\t%s\n", string);
        wprintw(game_window, "\tScore: %d    High Score: %d\n", num, highs);
        refresh();
        wrefresh(game_window);
        sleep(1);
        break;
    }
    endwin();
    printf("done\n");
    return 0;
}