繁体   English   中英

使用ncurses打印字符失败

[英]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

必须调用refreshwrefresh例程(或wnoutrefreshdoupdate )以将实际输出输出到终端,因为其他例程仅操纵数据结构。

所以您的程序缺少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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM