Como limpar a tela em C

Publicado por Ricardo Rodrigues Lucca em 19/06/2003

[ Hits: 94.986 ]

Blog: http://aventurasdeumdevop.blogspot.com.br/

 


Como limpar a tela em C



Olá!

Muitas vezes me perguntei como limpar a tela do console do Linux e dificilmente conseguia algum resultado. Depois, de algum tempo procurando na internet cheguei a um pequeno truque usando o printf, que tem a mesma função de limpar a tela.

Ao se usar uma dessas linhas a tela será limpa:

printf("\e[H\e[2J");
ou
printf("\33[H\33[2J");

Segue um programa de exemplo:

#include <stdio.h>

void main(void)
{
     printf("\e[H\e[2J");
     printf("Olá mundo!\n");
}

Até a próxima!

Outras dicas deste autor

Trocar os dois ultimos caracteres da linha de comando

Cartilha de segurança

Tamanho da fonte no XTerm

VIM executando programas

Bit Torrent no Linux

Leitura recomendada

stty: alternativa para echo e noecho

Compilando .EXEs no Linux (C/C++)

Curso de C online

Compilando no Code::Blocks

Função clrsc() no devC++

  

Comentários
[1] Comentário enviado por gustavo_marcon em 20/06/2003 - 18:45h

Acho que c/ a função system("clear") a tela limpa também

[2] Comentário enviado por mrluk em 23/06/2003 - 12:59h

isso q eu ia perguntar, isso tudo é pra fazer a mesma coisa que o clear? hehe...

[3] Comentário enviado por JuNiOx em 24/06/2003 - 03:12h

ae, no win eu usava clrscr(), porém, precisa do conio.h ...

já no linux, não existe essa lib... , esse comando system("clear") é idêntico ao clrscr() ou tem diferenças entre eles ?

[4] Comentário enviado por jllucca em 24/06/2003 - 11:22h

eu conhecia o system() para poder usar comandos do sistema operacional. Só que eu prefiro usar
muito mais "comando" do proprio prompt(ou ASCII), pois isso evita a declaração de mais uma unit.
Está certo, no meu caso, que continuo fazendo ainda a declaração de uma "unit". Mas, está é uma
que estou fazendo. Não está tão boa, mas foi o que eu usei para "esquecer" o system(), além disso
a unit que fiz faz jogadas de valor ao mesmo estilo que usei pra limpar a tela só que pra trocar a cor
da fonte. Essa parte da minha unit, chamo ela de tela.h, foi desenvolvida lendo o
bash-prompt-howto. Se quiserem eu posto ela aqui no site pra verem como fico ^^

[5] Comentário enviado por jllucca em 27/06/2003 - 13:10h

Eu postei a biblioteca, eu sei q ninguem pediu... Mas, ela está aqui já:

http://www.vivaolinux.com.br/scripts/verScript.php?codigo=129

[6] Comentário enviado por dr4ck0 em 20/10/2004 - 12:08h

Como funciona essas funcoes de limpar tela... Alguem sabe??

[7] Comentário enviado por Bardo em 22/10/2004 - 15:13h

O system("clear") limpa toda a tela antes de rodar o programa. Ex:

Se no interface texto estiver escrito:

mcedit prog.c
cc prog.c -o prog

Na hora que vc for rodar o prog (./prog) ele irá apagar tudo o mais que estiver escrito no terminal (no exemplo, ele irá limpar a chamada ao mcedit e o comando de compilação). Dá um aspecto mais elegante ao programa!!!

Valew!

[8] Comentário enviado por jllucca em 22/10/2004 - 23:22h

Opa,

realmente obrigado pelo exemplo Bardo. Mas, o dr4ck0 não se referia ao system("clear") e sim aos codigos ANSI(não tenho certeza agora) de terminais que agente pode utilizar para limpar a tela. Seria uma forma mais limpa(mesmo sendo intendivel), se todos os shells o reconhecessem(o desatualizado do windows não o reconhece, se quiser um contra exemplo). Assim, é mais fácil utilizar o system("clear") e quando necessario trocar para system("cls") ou outro comando equivalente.

[]'s

[9] Comentário enviado por jllucca em 04/11/2004 - 16:19h

system(texto) executa o comando do console indicado por texto. Assim, se voce abrir um prompt do msdos e digitar "clear" vai resultar num "comando inexistente"(nem lembro mais da mensagem, sorry). Mas, executando um "cls" ira resultar em limpar a tela. É o comando equivalente ao clear so q no prompt do windows(ou como prefiro dizer no msdos).

[10] Comentário enviado por Bardo em 04/11/2004 - 17:45h

Valew, mas olha só pra que serve esse system("cls")?

[11] Comentário enviado por hunz em 10/12/2004 - 19:07h

jlluca, dei uma lida nas manpages do console_codes e notei que há uma maneira mais simples de fazer isso:
printf("{COMENTARIO}33[2J");

Abraços,
Fiquem com Deus.

[12] Comentário enviado por jochan em 14/12/2005 - 14:42h

Muito legal, vai me ajudar bastente no meu projeto de C++ ... =)

[13] Comentário enviado por luisferpa em 04/03/2006 - 19:28h

muito bacaca a dica, vou testar ... vlw

[14] Comentário enviado por removido em 02/05/2006 - 16:39h

Com a função system("clear"); a tela tmbm fica limpah..
é como digitar clear na console****

[15] Comentário enviado por packetspy em 14/11/2006 - 19:47h

O codigo proposto não funciona....
O correto seria assim:

#include<stdio.h>
main()
{
printf("\e[H\e[2J");
printf("Ola mundo ");
}

Abraços !!!

[16] Comentário enviado por cacjorge em 14/05/2007 - 16:52h

uma pequena dica,

usem system("clear || cls");

ai funciona tanto em linux como no windows ;]


[17] Comentário enviado por SithTux em 25/05/2007 - 11:44h

Isso relsolveu meu problema mas acho o system("clear') bem mais pratico do que esse código ASCII... mas valew pessoal... to iniciando no Linux e to curtindo muito falow

[18] Comentário enviado por f_Candido em 09/07/2007 - 16:51h

Ajudou bastante aqui. Tanto com o código na função printf, quanto, usar a função system.
Vlw

[19] Comentário enviado por gabrield em 19/10/2007 - 10:02h

Legal!

Vai ajudar muito agora em diante...!

Vlw kra!

[20] Comentário enviado por anonimo1234 em 30/03/2008 - 00:21h

Muito boa dica,tava procurando um comando pra fazer isso e não conhecia esse system("cls");

Valeu :)

[21] Comentário enviado por removido em 04/06/2008 - 15:40h

hoje eu estava programando e tive problemas
com o comando system("clear"); tipo que isso não
limpava a tela do console no kate (fedora 8)
ele simplismente baixava a barra de rolagem a ponto que oque
havia acima nao aparecia mais. mas ainda existia. tá certo
isso? sou iniciante. por favor se eu falei besteira,
me desculpem :$ pdoksapokdopsa brigada

[22] Comentário enviado por cytron em 25/04/2011 - 01:17h

Só pro caso de alguém mais passar por aqui pra saber se system("clear") é realmente uma melhor poćão do que queles códigos ANSI...

É claro que não! É terrível usar a system() para limpar a tela, afinal, a funćão system() abre um processo só pra rodar um comando no shell.

Ao invés disso, usar printf() é bem mais leve. Mas ainda existem alternativas mais leves ainda do que usar a funćão printf(), basta criar sua própria funćão de limpar a tela, lembrando que utilizar um laćo pra rodar em um determinado número de linhas não é correto, visto que um terminal pode ter o número de linhas alterados apenas aumentando o tamanho da janela... ou diminuindo. Até mesmo na resolućão.

[23] Comentário enviado por EngNBA em 24/08/2014 - 13:02h

O system("clear") com toda certeza é o melhor e mais facil de lembrar. Mas vale lembrar que ele NAO FUNCIONA se o compilador usado for o g++.
Se voce usar o compilador gcc ele vai funcionar agora o G++ ele dará erro. Entao para o g++ é preferivel usar o que o nosso amigo postou ai "printf("\e[H\e[2J");"



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts