我似乎无法使termcap
的“ cl”命令正常工作,但是终端转义代码可以。
例如:
#include <termcap.h>
#include <stdio.h>
int main()
{
tputs(tgetstr("cl", NULL), 1, putchar);
}
这不会更改终端。但是当我跑步时:
#include <stdio.h>
int main()
{
printf("\e[2J");
}
或者如果我致电echo `tput cl`
终端被清除。
为什么会这样? termcap
是否应该提供相同的转义代码?
编辑:固定书写字符
EDIT2:这是因为我在致电tgetent()
之前没有致电tgetstr()
。谢谢大家!
答案 0 :(得分:3)
在用tgetstr()
进行查询之前,您需要使用tgetent()
查找用户终端的描述:
#include <stdio.h>
#include <termcap.h>
int main(void)
{
char buf[1024];
char *str;
tgetent(buf, getenv("TERM"));
str = tgetstr("cl", NULL);
fputs(str, stdout);
return 0;
}
使用-lncurses