Termcap“ cl”命令无法清除屏幕

时间:2018-08-10 11:20:05

标签: c terminal termcap

我似乎无法使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()。谢谢大家!

1 个答案:

答案 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

进行编译