0

私は現在 を学んでいてTermcaps Library、線に下線を引きたいと思っています。私の問題、私がそれをすると、私のキャラクターはC. 誰かが理由を知っていますか?でコンパイルしました-lcurses This is how I initialized my 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 に答える