我目前正在学习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 - Termcaps强调变化特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34372640/