NCurses新建窗口无法显示且无报错问题求助
问题排查与修复
你的代码存在几个关键问题导致新窗口无法显示,逐一说明并修复:
赋值操作替代相等判断:
if(second_window = NULL)是赋值语句而非比较操作。这会将NULL赋值给second_window,导致后续对该窗口的操作都是在空指针上执行,同时该条件永远为假,错误提示无法触发。正确写法应为if(second_window == NULL)。窗口刷新时机错误:原代码中
wrefresh(second_window)在getch()之后执行,意味着用户按下按键后才会刷新窗口,但刷新后程序立即调用endwin()退出,窗口内容根本来不及显示。需要先调用wrefresh刷新窗口,再用getch()等待用户输入。字符串语法错误:C语言字符串内不能直接换行,你代码中的字符串直接换行属于非法语法,需用
\n表示换行符。笔误:
Origian应为Original,虽不影响运行但建议修正。
修正后的代码
#include <ncurses/ncurses.h> int main() { WINDOW* second_window; initscr(); addstr("Original window, stdscr.\n"); refresh(); getch(); second_window = newwin(0, 0, 0, 0); if(second_window == NULL) { addstr("Unable to create new window...\n"); endwin(); return 1; } waddstr(second_window, "This is the second window!!!\n"); wrefresh(second_window); getch(); endwin(); return 0; }
内容的提问来源于stack exchange,提问作者darkonaito_
相关产品推荐
相关产品推荐

