c - ncurses 表单未分配:未知错误
问题描述
我正在使用 ncurses 在窗口中生成一个表单,但没有分配表单,通过使用 assert 我确认了这一点,但我不知道发生这种情况的原因,并且当我使用 perror 时它显示unknown error
。
这是代码..
#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, 0, 0, 0);
fields[1] = new_field(1, 20, 0, 15, 0, 0);
fields[2] = NULL;
assert(fields[0] != NULL && fields[1] != NULL );
set_field_buffer(fields[0], 0, "label1");
set_field_buffer(fields[1], 0, "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, 20, 100, 1, 1));
post_form(form);
refresh();
wrefresh(win_des);
}
int main(void)
{
win_des = newwin(LINES, COLS, 0, 0);
box(win_des,0,0);
refresh();
wrefresh(win_des);
init_form();
return 0;
}
这不起作用,我正在根据此处的示例尝试此代码。我知道我还必须制作表单驱动程序,通过它我将移动光标,但最初它不是打印字段,因此会崩溃。
编译 gcc my_form.c -lncurses -lform -o myform
解决方案
我认为你有两个问题:
- 你似乎没有打电话
initscr()
。你应该在任何其他诅咒例程之前调用它main
- 你打
new_form
了两次电话。删除第二个调用。
推荐阅读
- java - finally 之后带有 catch 的嵌套 try 块
- vb.net - LAB、RGB、XYZ 颜色转换不正确,反之亦然
- python - 使用twisted有选择地反向代理到不同的服务器
- angularjs - 如何将文件转换为 .RAR 文件节点 js
- javascript - 在角度 ts 和 firebase 中上传图像时返回数据 ID
- c# - 为什么我会收到 System.InvalidOperationException?
- html - 可以通过过渡更改字体真棒图标
- javascript - React-Native 不导入文件夹
- django - 预选数据以迁移到数据库
- mysql - 向查询的最后一列添加注释但不在数据库中更新它