Ncurses表单字段可以“无垫”吗?

问题描述

我正在将Ncurses表单用于c应用程序。 我的问题是,当我读取从表单中检索的字段时,它们会被空格填充,而我需要具有“正确”的字符串(例如,我无法在密码字段中修剪尾随空格)。 有一种优雅的方法可以执行此操作,或者有一种方法可以检索长度,因此我可以在第二时间在合适的字符处对其进行修剪?

解决方法

您可以通过维护一个字段缓冲区来做到这一点,该缓冲区以您要检索的格式存储字符串)。 ncurses-examples中的demo_forms.c程序执行此操作。代码中的comment

/*
 * Define each field with an extra one,for reflecting "actual" text.
 */
static FIELD *
make_field(const char *label,int frow,int fcol,int rows,int cols)
{
    FIELD *f = new_field(rows,cols,frow,fcol,o_value,1);

指传递给new_field 1 参数(额外缓冲区的数量)。

(有关详细信息,您必须阅读源代码和手册页:教程不在这里...)