Redefinir o ponto da tela para o topo da tela no console do Windows e Linux
Pergunta
Eu tenho uma pequena rotina executada no Linux e no Windows, escrita em C e que exibe a saída no console.Não estou vinculando nenhuma forma de maldição ou algo assim.
Atualmente eu limpo a tela usando
#ifdef __WIN32
system( "cls" );
#else
system( "clear" );
#endif
Então eu tenho um monte de instruções printf para atualizar o status.O que eu gostaria é apenas redefinir o ponteiro da tela para 0,0 para que eu possa sobrepor meus printfs.Prefiro evitar compilar mais extensões, especialmente porque estou codificando para dois sistemas operacionais diferentes.
Solução 2
Parece que encontrei uma maneira específica do Windows de fazer isso SetConsoleCursorPosition
Sequência de escape Ansi \033[0;0H para Linux - basta imprimir isso no console.
Outras dicas
Para plataformas do tipo Unix, a maneira usual de fazer isso é usando o maldições biblioteca.
Sim, para plataformas unix, maldições (ou ncurses, hoje em dia) é o caminho a seguir.E existem versões que funcionam no Windows, então você pode fazer isso da mesma forma em ambos os sistemas.
Para Windows - você pode usar caracteres de 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"
Antigamente, o Ansi.sys precisava ser carregado antes que você pudesse fazer isso, mas vale a pena tentar.
Instruções para adicionar suporte ANSIhttp://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.htmlObservação:que Ansi.sys funciona apenas em command.com.Você não pode usá-lo com cmd.exe