Pular para o conteúdo

Limpar tela do console em C

Responder tópico
  • Denunciar
  • Indicar
01 02

1. Limpar tela do console em C

Enviado em 24/08/2011 - 13:59h

Olá. Como faço para limpar a tela do console de um programa em C, sem ter que importar a biblioteca(stdlib.h) e usar a função system?


Responder tópico

2. Como será?

Enviado em 25/08/2011 - 09:55h

Bom dia amigão!

Essa tela que você se refere é uma tela de computador??? Ou um display??

Se for um display (LCD por exemplo) você pode reescrever todos os campos com espaço (0x20 em ASCII).

Se for um coputador (monitor) uma maneira meio "gambiarra" que você pode fazer é incluir um

cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

ou algo equivalente (printf).

3. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 10:07h

simples cara
system("cls");

4. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 10:09h

ô vinicius...

o cara falou q num quer usar o system...
hahahaha

5. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 10:13h

hehe...nem percebi!!!

6. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 10:38h

use as seguintes linhas (usa stdio.h ou ainda chamada implícita - modo no qual vc receberá um warning, mas sem problemas):

printf("\ZERO33[2J");
printf("\ZERO33[0;0f");

* substitua ZERO pelo numero 0 (\ 0 não aparece no vol - problema conhecido)

7. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 10:48h

Não há uma forma padrão de se faze-lo. Eu nunca fiz isso em C, mas já fiz em Java. Provavelmente funcionará.

for( i=0 ; i < 50; i++){
........printf("\n");
}

8. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 15:59h

Olá. Obrigado pela ajuda, amigos.

Mslomp, utilizei os comandos por você citados, porém os mesmos não funcionaram. Andrezc, o exemplo de código que me recomendaste é funcional, porém as próximas mensagens a serem exibidas não aparecem mais no topo da tela, e sim do meio para baixo. Como posso consertar isso?

9. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 16:16h

Crie você mesmo uma função:

void cls(void)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(hCon, &csbi);
DWORD br;
DWORD N = csbi.dwSize.X * csbi.dwCursorPosition.Y + csbi.dwCursorPosition.X + 1;
COORD curhome = {0,0};
FillConsoleOutputCharacter(hCon, ' ', N, curhome, &br);
csbi.srWindow.Bottom -= csbi.srWindow.Top;
csbi.srWindow.Top = 0;
SetConsoleWindowInfo(hCon, TRUE, &csbi.srWindow);
SetConsoleCursorPosition(hCon, curhome);
}

Obs.: Eu usava isso no windows, não sei se funciona no Linux

10. Re: Limpar tela do console em C

Enviado em 25/08/2011 - 16:23h

É, não vai funcionar não... Poxa, agora vou precisar de uma solução para isso no linux também :(

11. Re: Limpar tela do console em C

Enviado em 29/08/2011 - 19:38h

Olá. mrk3004, não entendi o funcionamento da função que você citou, pois ainda sou iniciante tanto em programação quanto em C.

De que forma pode-se implementar essa mesma função em Linux?

12. Re: Limpar tela do console em C

Enviado em 29/08/2011 - 19:56h

Pois é amigo, também não sei como fazer no Linux.

Eu usava isso para simular uma taxa de atualização da tela (em loop continuo) no windows e mostrar uma animação em ascii no console, e estou convertendo esse projeto para Linux, vou precisar descobrir uma forma otimizada aqui também, mas para utilizações simples as dicas acima funcionam bem, não testou?

ou então algo do tipo:
EDIT: Coloquei no paste, o vol ta distorcendo o código:

http://paste.ubuntu.com/677541/
01 02

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder