Como limpar a tela do terminal em c++

1. Como limpar a tela do terminal em c++

Rodrigo Ranea
SirCode

(usa Ubuntu)

Enviado em 28/12/2015 - 21:08h

Eu ja fiz de tudo, e sim eu inclui todas as bibliotecas que precisa pra cada comando:
system("cls");
system("clear");
clrscr();
printf("\033[2J");
clearscreen();
não quero usar ncurses
Tem como limpar a tela em c++ no ubuntu 15.10 ?????
Acho que o jeito é cria uma função que mude todos os caracteres da tela para nada e sete o cursor no começo


  


2. Re: Como limpar a tela do terminal em c++

Pythonux
bielinux

(usa Ubuntu)

Enviado em 28/12/2015 - 21:47h

Simples!

Inclua biblioteca stdio.h:
#include <stdio.h> 


Digite estas linhas de código:
for(int i = 0; i < 1000; i++){
printf("\n");
}


E pronto. Se quiser pôr numa função:
static void limpar_tela(){
for(int i = 0; i < 1000; i++){
printf("\n");
}
}


O bom de usar este conceito é que ele é multi plataforma. Em qualquer sistema operacional, seja do mercado ou não, vai rodar. Windows, Linux, Mac OS X, BeOS, Solaris, FreeBSD, OpenBSD, FreeDOS, UNIX, enfim, qualquer um, não tem como reclamar.
Quando você usa system("clear"), ele é compatível apenas com os UNIX-likes (inclui Linux) e o system("cls"), com os DOS-likes (inclui Windows).

Acho que o jeito é cria uma função que mude todos os caracteres da tela para nada e sete o cursor no começo

Sim, acho que é uma boa... mas infelizmente, meus conhecimentos em linguagens C/C++ não me permitem pensar numa função assim (ou talvez porque sou burro!!!!). Creio que a lógica deva ser esta:
- Algoritmos para limpar o stdout (saída padrão - o console)
- Algoritmos para setar a posição do cursor no início


3. Res

Rodrigo Ranea
SirCode

(usa Ubuntu)

Enviado em 28/12/2015 - 22:01h

Eu quero limpa a tela e não da um milhão de end lines
mas por enquanto ta funcionando


4. Re: Como limpar a tela do terminal em c++

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/12/2015 - 00:45h

#include <stdio.h>
#include <curses.h>
#include <term.h>

/* ... */

int main(){
/* Obtém informações do tipo do terminal e a carrega no programa. */
if(setupterm(NULL, STDOUT_FILENO, NULL)==ERR){
fprintf(stderr, "Não foi possível carregar dados do tipo do terminal.\n";)
exit(1);
}

/* ... */

putp(clear_screen); // Limpa a tela.

/* ... */

putp(clear_screen); // Limpa a tela.

/* ... */

}


EDIT: Eu havia escrito “<stdin.h>” em lugar de “<stdio.h>”. O código acima foi corrigido depois que o usuário SirCode apontou o erro.

Em tempo: as funções da biblioteca curses não fazem parte da biblioteca padrão do C. Por isso, na hora gerar o executável, é necessário informar ao linker que ele deve usar a biblioteca curses, o que geralmente se faz com a diretiva “-lcurses” passada como argumento.


5. Re: Como limpar a tela do terminal em c++

Rodrigo Ranea
SirCode

(usa Ubuntu)

Enviado em 29/12/2015 - 12:29h

paulo1205 escreveu:

#include <stdin.h>
#include <curses.h>
#include <term.h>

/* ... */

int main(){
/* Obtém informações do tipo do terminal e a carrega no programa. */
if(setupterm(NULL, STDOUT_FILENO, NULL)==ERR){
fprintf(stderr, "Não foi possível carregar dados do tipo do terminal.\n";)
exit(1);
}

/* ... */

putp(clear_screen); // Limpa a tela.

/* ... */

putp(clear_screen); // Limpa a tela.

/* ... */

}


Eu não tenho a bibioteca stdin.h


6. Re: Como limpar a tela do terminal em c++

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/12/2015 - 14:54h

SirCode escreveu:

Eu não tenho a bibioteca stdin.h


Oops! Eu escrevi com erro: é <stdio.h>, claro! Mas creio que você usar também a forma <cstdio>, que geralmente é preferida em C++.

Já ajeitei minha resposta original. Obrigado por apontar o erro.


7. Outro erro

Rodrigo Ranea
SirCode

(usa Ubuntu)

Enviado em 29/12/2015 - 17:46h

paulo1205 escreveu:

SirCode escreveu:

Eu não tenho a bibioteca stdin.h


Oops! Eu escrevi com erro: é <stdio.h>, claro! Mas creio que você usar também a forma <cstdio>, que geralmente é preferida em C++.

Já ajeitei minha resposta original. Obrigado por apontar o erro.


Tambem não tem o curses.h


8. Re: Como limpar a tela do terminal em c++

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/12/2015 - 19:40h

Nesse caso, você precisa instalar. Como você diz no seu perfil que roda Ubuntu, tente o seguinte.

sudo apt-get install libncurses-dev 



9. Infelizmente parece que meu computador gosta de arrumar erros

Rodrigo Ranea
SirCode

(usa Ubuntu)

Enviado em 29/12/2015 - 22:39h

paulo1205 escreveu:

Nesse caso, você precisa instalar. Como você diz no seu perfil que roda Ubuntu, tente o seguinte.

sudo apt-get install libncurses-dev 


/home/PcProblemtico/Área de Trabalho/Projetos C++/Workspace/Linguifaz/main.cpp:32:24: error: ‘STDOUT_FILENO’ was not declared in this scope
if(setupterm(NULL, STDOUT_FILENO, NULL)==ERR){
^
/home/PcProblemtico/Área de Trabalho/Projetos C++/Workspace/Linguifaz/main.cpp:38:1: error: expected ‘}’ at end of input
}
^
Ling

AAAAAA para de da erro pc problematico


10. Re: Como limpar a tela do terminal em c++

Pythonux
bielinux

(usa Ubuntu)

Enviado em 29/12/2015 - 22:44h

SirCode escreveu:

paulo1205 escreveu:

Nesse caso, você precisa instalar. Como você diz no seu perfil que roda Ubuntu, tente o seguinte.

sudo apt-get install libncurses-dev 


/home/PcProblemtico/Área de Trabalho/Projetos C++/Workspace/Linguifaz/main.cpp:32:24: error: ‘STDOUT_FILENO’ was not declared in this scope
if(setupterm(NULL, STDOUT_FILENO, NULL)==ERR){
^
/home/PcProblemtico/Área de Trabalho/Projetos C++/Workspace/Linguifaz/main.cpp:38:1: error: expected ‘}’ at end of input
}
^
Ling

AAAAAA para de da erro pc problematico


Creio que seja STDOUT_FILE_NO e não STDOUT_FILENO. E entre as linhas 37~38 faltou um }. Leia os warnings do compilador.


11. Re: Como limpar a tela do terminal em c++

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/12/2015 - 05:48h

Um pouco de pesquisa por conta própria seria bom, não acha? Googlando o termo STDOUT_FILENO chega-se facilmente, por exemplo, a http://pubs.opengroup.org/onlinepubs/009695399/functions/stdin.html.

Em todo caso, eis a explicação mastigada: STDOUT_FILENO é uma constante que indica o número do descritor de arquivo associado à saída de texto padrão. O valor dessa constante, em sistemas UNIX, UNIX-like (Linux inclusive) e outros que sejam compatíveis com POSIX é sempre igual a 1. Esse descritor de arquivo é o mesmo associado à saída padrão da biblioteca padrão do C, chamado stdout.

Assim sendo, no seu código você tem três opções:

1) (NÃO RECOMENDO!) Substituir todas as ocorrências de STDOUT_FILENO por 1. (Mesmo sendo válida, não a recomendo porque uma constante numérica solta no meio do programa é algo que dificulta a compreensão do que o programa deve fazer.)

2) Incluir o cabeçalho <unistd.h>.

3) Substituir todas as ocorrências de STDOUT_FILENO por fileno(stdout). Nesse caso, tanto fileno quanto stdout estão declaradas em <stdio.h> (ou <cstdio>).


12. Re: Como limpar a tela do terminal em c++

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/12/2015 - 07:37h

Eu me lembro de uma época onde quando se perguntava "como se limpa a tela do computador" em que aparecia um engraçadinho dizendo coisas do tipo

- um espanador
- um pano seco
- água e sabão
- pinho sol
- um pano e isopropílico
- etc.

Igual quando se perguntava "como se invade um computador" em que se respondia

- chave de fenda
- martelo e talhadeira
- picareta

Então pelo menos quanto ao primeiro caso pode-se dar uma resposta digna.
Eu fiz aqui este exemplo logo abaixo e deu certo no meu Linux.
Creio que a dúvida foi resolvida, mas estou colocando porque por algum motivo aqui funcionou e queria mostrar.

As respostas acima estão mais elucidativas e com acréscimos.
Marque o tópico como resolvido e escolha uma delas como a melhor.

#include <iostream>

int main(void) {


std::cout << "\033c";

return 0;

}

----------------------------------------------------------------------------------------------------------------
http://24.media.tumblr.com/tumblr_m62bwpSi291qdlh1io1_250.gif

# apt-get purge systemd

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts