0

我目前正在学习Termcaps Library,我想强调一条线。我的问题,当我这样做时,我的角色变成了C. 有人知道为什么吗?我用这编译了-lcurses 我的 termcaps :

void        init_termcaps(t_env *e)
{
    char           *name_term;
    int            ierror[2];

    name_term = getenv("TERM");
    ierror[0] = tgetent(NULL, name_term);
    ierror[1] = tcgetattr(0, &e->term);
    print_termcaps_error(ierror);
    e->term.c_lflag &= ~(ECHO | ICANON);
    e->term.c_cc[VMIN] = 1;
    e->term.c_cc[VTIME] = 0;
    if (tcsetattr(0, TCSANOW, &e->term) == -1)
        ft_printexit("ERROR init termcaps\n", 1);
    else
        ft_putendl("termcaps init done.");
}

这就是我强调的方式:

void    underline_line(t_llist *tmp)
{
    int i;

    i = 0;
    tputs(ft_tgetstr("us"), AFFCNT, ft_iputchar);
    while (CONTENT->word[i])
    {
        tputs(ft_tgetstr("kr"), AFFCNT, ft_iputchar);
        i++;
    }
    tputs(ft_tgetstr("ue"), AFFCNT, ft_iputchar);
    while (i-- >= 0)
        tputs(ft_tgetstr("le"), AFFCNT, ft_iputchar);
}
4

1 回答 1

1

您的示例尝试通过以下方式在屏幕上的现有文本下划线

  • 打开下划线属性
  • 从左到右移动光标
  • 关闭下划线属性

通常,终端不会那样工作。您的示例应该简单地(重新)打印要下划线的单词,而不是移动光标。视频属性在打印时应用于文本,除非重写文本,否则无法修改。

于 2015-12-19T16:20:09.033 回答