Movendo o cursor em C usando Console Escape Sequence

Publicado por Hunz em 17/12/2004

[ Hits: 22.319 ]

Blog: http://tnegri.com/

 


Movendo o cursor em C usando Console Escape Sequence



Quem que conhece a gotoxy() da conio.h? Ou alguma outra função de outra biblioteca?

Pois é, eu não sabia como fazer isso sem o auxílio dessas bibliotecas até que resolvi dar uma lida no "man console_codes" e acabei encontrando como fazer isso de uma maneira bem simples. :)

Aí vai a função:

void movexy(int x, int y)
{
   printf("{TEXTO}33[%d;%dH",y,x);
}

NOTA: Na Escape Sequence a coordenada Y (linha) vem antes da X (coluna).

Para usar também é fácil, aí vai um exemplo:

#include <stdio.h>

int main(void)
{
   printf("Ola Mundo!");
   movexy(5,5);
   printf("Ola Mundo na linha 5, coluna 5!");
   movexy(1,10);
   printf("Ola Mundo na linha 10, coluna 1!");
   movexy(10,3);
   printf("Ola Mundo na linha 3, coluna 10!");
}

Espero que isso ajude vocês. :)

Abraços,
Fiquem com Deus.

Outras dicas deste autor

O poder do #define

STDPRN para GCC

Checagem de erro do scanf

aMSN travando? Sem problemas!

Leitura recomendada

C/C++ no modo Hard

MDK (Mix Development Kit) no Projeto GNU

Compilando/Instalando o novo Cairo-Dock no Sabayon

Corrigindo o bug "file format not recognized" após atualizar glib2

Verificar conversão de tipo em C/C++

  

Comentários
[1] Comentário enviado por gm_nununo em 07/04/2005 - 20:33h

/* Uma boa maneira de resolver o problema é com defines...
Joga eles em um .H tipo, meuConio.h e depois é só alegria...
O seu código não funcionou no meu console... mas a dica de procurar a documentação do printf ajudou bastante!!!
*/

#include <stdio.h>
#include <iostream.h>

#define gotoxy(x,y) printf("\x1B[%i;%iH",(y),(x))
#define clrscr() printf("\x1B[2J")
#define clreol() printf("\x1B[K")

int main()
{
clrscr();
gotoxy(10,10);
cout << "ola 1 mundo";
gotoxy(30,30);
cout << "ola 2 mundo";
}

[2] Comentário enviado por leo_nirvana em 21/01/2006 - 13:12h

No meu console a funcao movexy que voce fez nao funcionou entao fiz a seguinte alteracao

void movexy(int x, int y)
{
printf("{COMENTARIO}33[%d;%dH",y,x);
}

Essa ideia de usar controlador ANSI para posicionar o cursor na tela eh bem legal...



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts