微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ncurses 表单未分配:未知错误

如何解决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。删除第二个调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。