如何解决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;
}
编译
解决方法
我认为您有两个问题:
- 您似乎没有在呼叫
initscr()
。您应该在main
中的任何其他诅咒例程之前调用它
- 您拨打了两次
new_form
。删除第二个调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。