¿Cómo borrar la pantalla con \ x1b [2j?

¿Cómo implementamos clrscr() ? Buscando en Google encontré que \x1b[2j puede usarse para borrar la pantalla, pero ¿cómo lo usamos?

La biblioteca estándar de C no proporciona una forma de borrar la pantalla. Necesitas una biblioteca dependiente del sistema operativo para eso.

En DOS y Windows, para un progtwig que se ejecuta en una consola de DOS o Windows, puede usar las extensiones de DOS / Windows provistas en la biblioteca central de C incluida con el SO:

 #include  clrscr(); 

En los sistemas UNIX, puede utilizar la biblioteca de curses, que se proporciona con el sistema operativo. Los puertos de la biblioteca de curses existen para la mayoría de los sistemas operativos, incluido Windows, por lo que este es el camino a seguir en un progtwig portátil. Vincule su progtwig con -lcurses y uso

 #include  erase(); 

Algunos terminales y emuladores de terminales realizan funciones especiales, como limpiar la pantalla cuando reciben una secuencia de escape. La mayoría de los terminales siguen el estándar ANSI que define varias secuencias de escape; "\x1b[2J" es una secuencia de este tipo, y su efecto es limpiar la pantalla. Tenga en cuenta la capital J En tal terminal, fputs("\x1b[2J", stdout) borra la pantalla. De hecho, esto es lo que hace la biblioteca de curses cuando llama a erase() en un terminal de este tipo; La biblioteca de curses incluye una base de datos de tipos de terminales y qué secuencias de escape usar en los distintos tipos.

Si está seguro de que es la secuencia de control que necesita usar, entonces:

 #include  int main(void) { fputs("\x1b[2j", stdout); return(0); } 

Esto omite deliberadamente la nueva línea, pero podría ser mejor agregar una después de la ‘j’. Sin embargo, como Gilles señala en su respuesta , hay otras formas de hacerlo que tienen méritos en comparación con esta solución.

En Windows puedes probar

 #include  #include  #include  void clrscr(void) { HANDLE std_out = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO cbi; COORD origin = {0,0}; int buf_length; GetConsoleScreenBufferInfo(std_out,&cbi); buf_length = cbi.dwSize.X*cbi.dwSize.Y; FillConsoleOutputCharacter(std_out,0x20,buf_length,origin,0); FillConsoleOutputAttribute(std_out,0x07,buf_length,origin,0); } int _tmain(int argc, wchar_t *argv[], wchar_t *envp[]) { DWORD i; _tprintf(TEXT("Clear screen probe...\n")); clrscr(); return 0; } 

“\ x1b [H \ x1b [2J” funciona en OSX.