ncurses 表单未分配:未知错误

问题描述

我正在使用 ncurses 在窗口中生成表单,但未分配表单,通过使用 assert 我确认了这一点,但我不知道发生这种情况的原因,而且当我使用 perror 时,它显示 { {1}}。

这是代码..

unkNown error

这不起作用,我正在基于此示例 here 尝试此代码。 我知道我还必须制作表单驱动程序,通过它我将移动光标,但最初它没有打印字段,因此会崩溃。

使用 #include <ncurses.h> #include <stdio.h> #include <form.h> #include <assert.h> WINDOW *win_des; FORM *form; FIELD *fields[3]; void init_form() { ui.if_form =1; // allocate fields,odd: fixed,even: editable... fields[0] = new_field(1,10,0); fields[1] = new_field(1,20,15,0); fields[2] = NULL; assert(fields[0] != NULL && fields[1] != NULL ); set_field_buffer(fields[0],"label1"); set_field_buffer(fields[1],"val1"); set_field_opts(fields[0],O_VISIBLE | O_PUBLIC | O_AUTOSKIP); set_field_opts(fields[1],O_VISIBLE | O_PUBLIC | O_EDIT | O_ACTIVE); set_field_back(fields[1],A_REVERSE|A_BOLD); form = new_form(fields); keypad(win_des,true); form = new_form(fields); assert(form !=NULL); set_form_win(form,win_des); set_form_sub(form,derwin(win_des,100,1,1)); post_form(form); refresh(); wrefresh(win_des); } int main(void) { win_des = newwin(LInes,COLS,0); Box(win_des,0); refresh(); wrefresh(win_des); init_form(); return 0; } 编译

解决方法

我认为您有两个问题:

  1. 您似乎没有在呼叫 initscr()。您应该在 main
  2. 中的任何其他诅咒例程之前调用它
  3. 您拨打了两次 new_form。删除第二个调用。