Como obter a posição do cursor em um programa C usando termcap, sem escrever um caractere?

Gostaria de saber como obter a posição do cursor (x, y) no meu programa, sem escrever nada na tela nem rastrear o tempo todo.

Eu descobri uma maneira de obter sua posição com essa função (não checo o retorno de leitura, gravação, etc aqui para escrever um código menor sobre esse assunto, mas faço isso no meu programa):

void get_cursor_position(int *col, int *rows)
{
    int a = 0;
    int i = 0;
    char buf[4]

    write(1, "\033[6n", 4); // string asking for the cursor position
    read(1, buf, 4);

    while (buf[i])
    {
        if (buf[i] >= 48 && buf[i] <= 57)
        {
            if (a == 0)
                *rows = atoi(&buf[i]) - 1;
            else
                *col = atoi(&(buf[i]) - 1;
            a++;
        }
        i++;
    }
}

Essa função fornece a posição exata do cursor (* linhas = y, * col = x), mas ela grava na tela.

Como posso obter a posição do cursor sem escrever nada na tela? (porque se o cursor estiver em um dos caracteres impressos, ele será sobrescrito).

Este é um projeto da escola, então só posso usar o termcap, não posso usar funções ncurses, as únicas funções permitidas são tputs, tgoto, tgetstr, tgetnum, tgetflag.

questionAnswers(1)

yourAnswerToTheQuestion