我正在使用XUBUNTU 16.04和Geany。 我开始测试库ncurses。我不能表现出角色。当我运行程序时会出现一个窗口,但不会出现字符“a”和“*”。
这是我的代码:
#include <ncurses.h>
void line(char ch, int n)
{
int i;
for( i = 1; i<=n; i++ )
addch(ch);
}
int main()
{
clear();
line("a", 50);
line("*", 8);
return 0;
}
答案 0 :(得分:3)
man curs_refresh
:
必须调用
refresh
和wrefresh
例程(或wnoutrefresh
和doupdate
)才能获得到终端的实际输出,因为其他例程只是操纵数据结构。 / p>
所以你的程序缺少refresh();
。
您似乎还缺少初始化/清理,即在开始时调用initscr()
,在程序结束时调用endwin()
。
答案 1 :(得分:2)
缺少两件事:
初始化始于initscr
(或newterm
,如果你是ead the manual page)。如上所述,程序会在屏幕上打印一些内容,然后退出而不会暂停(如果您的终端使用备用屏幕,文本将会消失)。 getch
(read a character from the keyboard)执行该操作,并执行refresh
。顺便说一下,clear
是不必要的,因为initscr
does that:
initscr
代码确定终端类型并初始化所有curses数据结构。 initscr也会导致第一次刷新调用(3x) 清除屏幕。如果发生错误,initscr
会写一个合适的错误 标准错误和退出的错误消息;否则,指针将返回stdscr
。
试试这个:
#include <curses.h>
void line(char ch, int n)
{
int i;
for( i = 1; i<=n; i++ )
addch(ch);
}
int main()
{
initscr();
cbreak();
noecho();
line("a", 50);
line("*", 8);
getch();
endwin();
return 0;
}