Limpar tela do console em C

1. Limpar tela do console em C

White Hawk
WhiteHawk

(usa Ubuntu)

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?




  


2. Como será?

Emerson Lara
snowbg

(usa CentOS)

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

Perfil removido
removido

(usa Nenhuma)

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

simples cara
system("cls");


4. Re: Limpar tela do console em C

Emerson Lara
snowbg

(usa CentOS)

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

Perfil removido
removido

(usa Nenhuma)

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

hehe...nem percebi!!!


6. Re: Limpar tela do console em C

Marcelo A. B. Slomp
mslomp

(usa Slackware)

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

André
andrezc

(usa Debian)

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

White Hawk
WhiteHawk

(usa Ubuntu)

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

Perfil removido
removido

(usa Nenhuma)

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

Perfil removido
removido

(usa Nenhuma)

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

White Hawk
WhiteHawk

(usa Ubuntu)

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

Perfil removido
removido

(usa Nenhuma)

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



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts