Реализация gotoxy () для Linux с использованием printf - PullRequest
12 голосов
/ 31 декабря 2011

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 31 декабря 2011

Используется коды выхода терминала для позиционирования курсора.

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

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

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

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

3 голосов
/ 31 декабря 2011

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

1 голос
/ 31 декабря 2011

Это известно как управляющий код ANSI. Я не видел тех, которые использовались в последнее время. Вот страница, которая объясняет о них:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...