Redefinir o ponto da tela para o topo da tela no console do Windows e Linux

StackOverflow https://stackoverflow.com/questions/56324

  •  09-06-2019
  •  | 
  •  

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top