【问题标题】:Termcaps underlining change characterTermcaps 下划线改变字符
【发布时间】:2015-12-20 00:21:13
【问题描述】:

我目前正在学习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);
}

【问题讨论】:

    标签: c unix termcap


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多