paulo1205
(usa Ubuntu)
Enviado em 13/05/2018 - 00:23h
A maioria dos terminais e emuladores de terminais usados em computadores com UNIX seguem o padrão ANSI X3.64 (ou alguma variação, que pode ser tanto um subconjunto, como o VT-100, ou incorporar extensões, como o xterm-256color), que usa sequências de especiais de caracteres para fazer com que o terminal execute funções especiais, tais como reposicionar o cursor, mudar atributos de caracteres ou limpar a tela.
A maioria dessas sequências especiais começa com o caráter ASCII chamado "ESC" (abreviação de
escape), que tem código 27 (em octal, 033; em hexadecimal, 0x1b), e que pode ser expresso em uma constante de caracteres do C como '\033', '\x1b' ou '\e'. O caracteres que vêm em seguida determinam a função que será executada, de acordo com as definições do padrão.
Contudo, eu considero que colocar essas sequências de escape diretamente no código é uma prática tão ruim quanto chamar
system("clear") ou
system("cls"). E por quê? Porque, como eu disse no início, embora a maioria dos terminais e emuladores de terminais sejam compatíveis com ANSI X3.64, existem terminais que não o são. Eu mesmo usei, durante muito tempo, terminais que não o eram, e sei como é ruim ter gente supondo coisas erradas sobre o hardware (ou software, no caso de emuladores) que a gente usa. (De certa maneira, uma reedição disso é quando você entre num site que só funciona com tipo ou versão específica de um navegador, ou que requer um plugin obsoleto e que só está genericamente disponível para um certo sistema operacional.)
Uma maneira melhor de fazer é não assumir um terminal específico, e usar diretamente aquilo que o usuário configurar. Para tanto, veja a resposta nº 4 do seguinte tópico desta comunidade:
https://www.vivaolinux.com.br/topico/C-C++/Como-limpar-a-tela-do-terminal-em-c.