Реализация gotoxy() для Linux с использованием printf
Я искал замену gotoxy() для gcc-компилятора и нашел это -
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
Я хочу знать, как это работает, я имею в виду, когда мы используем [
и ;
внутри printf, что там делает 0x1B
, и как он принимает курсор в строку/столбец с этим кодом
Я никогда не видел такого типа практики для printf в книгах, так что было бы здорово, если бы вы могли указать мне ссылку, где я могу найти о таких применениях printf.
Ответы
Ответ 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