Сбросить точку экрана в верхнюю часть экрана в консоли Windows и Linux
Вопрос
У меня есть небольшая программа, которая запускается под Linux и Windows, написанная на C и отображающая выходные данные на консоли.Я не привязываюсь к какой-либо форме ругательств или чего-то в этом роде.
В настоящее время я очищаю экран, используя
#ifdef __WIN32
system( "cls" );
#else
system( "clear" );
#endif
Затем у меня есть несколько операторов printf для обновления статуса.Мне бы хотелось просто сбросить указатель экрана на 0,0, чтобы затем я мог просто наложить свои printfs.Я бы предпочел избежать компиляции дополнительных расширений, тем более что я пишу код для двух разных ОС.
Решение 2
Похоже, я нашел способ сделать это для Windows. SetConsoleCursorPosition
Escape-последовательность Ansi \033[0;0H для Linux — просто выведите ее на консоль.
Другие советы
Для Unix-подобных платформ обычным способом сделать это является использование проклятия библиотека.
Да, для платформ unix проклятия (или в наши дни ncurses) — это лучший вариант.Есть версии, которые работают под Windows, поэтому вы можете сделать это одинаково в обеих системах.
Для окон — вы можете использовать escape-символы ANSI.
http://www.lexipixel.com/news/star_dot_star/using_ansi_escape_sequences.htm
http://www.robvanderwoude.com/ansi.html
printf "\x[0;0H"
Раньше для этого нужно было загрузить Ansi.sys, но попытаться стоит.
Инструкции по добавлению поддержки ANSIhttp://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.htmlПримечание:что Ansi.sys работает только под командой Command.com.Вы не можете использовать его с cmd.exe