Подтвердить что ты не робот

Реализация gotoxy() для Linux с использованием printf

Я искал замену gotoxy() для gcc-компилятора и нашел это -

void gotoxy(int x,int y)
{
    printf("%c[%d;%df",0x1B,y,x);
}

Я хочу знать, как это работает, я имею в виду, когда мы используем [ и ; внутри printf, что там делает 0x1B, и как он принимает курсор в строку/столбец с этим кодом

Я никогда не видел такого типа практики для printf в книгах, так что было бы здорово, если бы вы могли указать мне ссылку, где я могу найти о таких применениях printf.

4b9b3361

Ответ 1

Это используется терминальные escape-коды для размещения курсора.

"\x1B" - это escape-символ, который сообщает вашему терминалу, что то, что будет дальше, не предназначено для печати на экране, а скорее команда на терминал (или, скорее всего, эмулятор терминала)

Конечная "f" указывает, что вы хотите заставить позицию курсора где-то, обозначенную предшествующими ей координатами.

Force Cursor Position   <ESC>[{ROW};{COLUMN}f

Итак, если вы вызываете gotoxy(4,2), он заканчивает отправку escape-последовательности "(ESC)[2;4f", где ESC - это байт 0x1B.

Ответ 2

Они называются ANSI Escape Sequences и получены из DEC VT100, который был представлен в 1978 году.

Ответ 3

Это известно как escape-код ANSI. Я не видел тех, кто использовал это время. Вот страница, которая рассказывает о них:

http://en.wikipedia.org/wiki/ANSI_escape_code