使用ncurses打印字符失败

时间:2017-11-26 18:11:47

标签: c ncurses

我正在使用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;
 }

2 个答案:

答案 0 :(得分:3)

man curs_refresh

  

必须调用refreshwrefresh例程(或wnoutrefreshdoupdate)才能获得到终端的实际输出,因为其他例程只是操纵数据结构。 / p>

所以你的程序缺少refresh();

您似乎还缺少初始化/清理,即在开始时调用initscr(),在程序结束时调用endwin()

答案 1 :(得分:2)

缺少两件事:

  • 初始化
  • 暂时保留屏幕上文字的内容

初始化始于initscr(或newterm,如果你是ead the manual page)。如上所述,程序会在屏幕上打印一些内容,然后退出而不会暂停(如果您的终端使用备用屏幕,文本将会消失)。 getchread 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;
 }