繁体   English   中英

打印问题,ncurses

[英]probleme with printw, ncurses

我需要使用printw(); 但它不起作用,它只是段错误。 我已经使用过initscrendwin但是它没有任何改变。

void    aff_battel(char **str)
{
  int   i;
  int   j;
  char  *str2;

  if ((str2 = malloc(sizeof(*str) * 23)) == NULL)
    return ;
  str2 = "---------------------\n\0";
  j = 0;
  i = 0;
  while (str[i] != NULL)
    {
      initscr();
      printw("---------------------\n\0"); /* it doesn't work */
      printw("%s", str2); /* here nether */
      endwin();
      i++;
    }
}

知道我放了initsrc(); 在循环的开始和结束时赢了,但它仍然没有给我印任何东西

void    aff_battel(char **str)
{
  int   i;
  int   j;

  j = 0;
  i = 0;
  while (str[i] != NULL)
    {
      printw("---------------------\n");
      i++;
    }
  endwin();
}

正如Joachim Pileborg所说,在注释中, initscr()应该在程序的开头,而endwin()在结尾。

initscr()设置一个内部屏幕字符映射, printw()将写入其中。

要将屏幕地图复制到实际屏幕,您需要调用refresh() 没有它,您将看不到任何东西。

endwin()清除屏幕并将终端重置为正常状态。

这是一个使用您的简化函数来演示ncurses函数的示例。 我已经使用getch()使程序等待按键,然后退出。

注意:在此示例中,由于getch()也会refresh() ,因此仍会显示不带refresh()的文本。

#include <ncurses.h>

void    aff_battel(char **str)
{
  int   i;
  int   j;

  j = 0;
  i = 0;
  while (str[i] != NULL)
  {
      printw("---------------------\n");
      i++;
  }
  refresh();
}

void main(int argc, char **argv)
{
    initscr();
    aff_battel(argv);
    getch();
    endwin();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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