Escape-код C ANSI

Как я могу управлять курсором с помощью ANSI, используя escape-последовательности, используя Turbo C? Здесь я предоставил код, но он еще не работает в моем TurboC.

main()
{
   while( getche() != '.' )
      printf("\x1B[B");
}

person Aaron    schedule 10.06.2011    source источник
comment
Почему вы настаиваете на использовании Turbo C, когда все говорят вам использовать что-то другое? Вы зря тратите свое (и, что более важно, наше) время.   -  person    schedule 10.06.2011
comment
@ Нил Баттерворт: я не заставляю вас тратить свое время. Это все еще вопрос, на который вы можете ответить по желанию. Вы не знаете, почему я использую это. Мои извинения, сэр!   -  person Aaron    schedule 10.06.2011
comment
Turbo C на самом деле неплохо реализует стандарт C90. Основная проблема с ним в том, что он смешивает язык C с нестандартным дерьмом, и у новичка нет простого способа определить, что такое язык C, а что дерьмо. Современные компиляторы, такие как GCC, тоже реализуют много дерьма, но там у вас есть возможность отключить это дерьмо с помощью -std=c90 -pedantic.   -  person Lundin    schedule 10.06.2011
comment
Лундин, Вы имели в виду -std=c99 или -std=iso9899:1990 (что то же самое, что -std=c89)?   -  person Susam Pal    schedule 10.06.2011


Ответы (2)


Помимо возможности того, что этот вывод может быть буферизован строкой (это означает, что ничего не может появиться, пока вы не отправите новую строку), вам, вероятно, также следует убедиться, что ANSI.SYS загружен, поскольку это драйвер устройства, ответственный за интерпретацию этих последовательностей.

Но мне интересно, почему вы это делаете. Из памяти (по общему признанию довольно бледной памяти) в Turbo C есть призывы делать такие вещи, gotoXY и clrscr и тому подобное.

person paxdiablo    schedule 10.06.2011
comment
что это за ANSI.SYS? Как я могу загрузить его? и где я могу найти его? - person Aaron; 10.06.2011
comment
кроме того, если я не ошибаюсь, атрибут символа или строки можно также установить с помощью управляющей последовательности ANSI. - person Aaron; 10.06.2011
comment
Теперь это становится настоящим усилием, мне нужно пройти весь путь до ствола мозга, чтобы получить этот материал, с возможностью того, что я могу неправильно вспомнить :-) Это зависит от того, какую ОС вы используете. До NT это был драйвер устройства, загружаемый config.sys. Для NT и выше вам нужно было добавить DEVICE=%systemroot%\system32\ANSI.SYS в ваш файл system32\config.nt. Это работало по крайней мере до XP. Я не могу точно сказать, работало ли это на Vista и выше, так как я никогда ими не пользовался. - person paxdiablo; 10.06.2011

Способ ввода escape-символа с помощью printf():

printf("%c[B", 0x1b);

Но обычно (я не знаю Turbo C) есть библиотеки для переносимых вещей, связанных с терминалом.

person mouviciel    schedule 10.06.2011