[英]Printing characters with ncurses fails
我正在使用XUBUNTU 16.04和Geany。 我开始测试库ncurses。 Bu我无法显示角色。 当我运行程序时,会出现一个窗口,但不会出现字符“ 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;
}
man curs_refresh
:
必须调用
refresh
和wrefresh
例程(或wnoutrefresh
和doupdate
)以将实际输出输出到终端,因为其他例程仅操纵数据结构。
所以您的程序缺少refresh();
。
看起来您还缺少初始化/清除功能,即在程序的开头调用了initscr()
,在程序的结尾调用了endwin()
。
缺少两件事:
初始化以initscr
(或newterm
,如果您使用手册页 )开始。 按照编写的程序会在屏幕上打印一些内容,然后退出而不会暂停(并且,如果您的终端使用备用屏幕,则文本将消失)。 一个getch
( 从键盘上读取一个字符 )可以做到这一点,还可以进行refresh
。 顺便说一句, clear
是不必要的,因为initscr
这样做 :
initscr
代码确定终端类型并初始化所有curses数据结构。 initscr还会导致第一次调用refresh(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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.