[C con Clase] Escribir siempre en la misma linea

Steven Davidson steven en conclase.net
Mar Feb 6 19:43:38 CET 2007


Hola Jandro,

El pasado 2007-02-06 08:43:28, Jandro escribió:

J> Hola a todos.
J> Necesito por sacar por pantalla unas variables, pero necesito que una  
J> siempre borre a la anterior, es decir, escribir siempre en la misma  
J> linea borrando lo que ya hay escrito.
J> Como puedo hacerlo?

Existe una manera con las funciones estándares, pero depende de ciertas restricciones. Podemos usar el carácter '\b' para "retroceder". Sin embargo, esto sólo funciona si estamos en la misma línea. Por ejemplo,

printf( "12345" );       // Mostramos "12345"
printf( "\b\b\b\b\b" );  // Retrocedemos 5 lugares - en la misma línea
// Pausar
...
printf( "12346" );       // Mostramos "12346" que ahora reemplazará "12345"
printf( "\b\b\b\b\b" );  // Retrocedemos 5 lugares - en la misma línea

Si el cursor está en otra línea, '\b' no "ascenderá" a la línea previa.

Típicamente, para hacer estos comportamientos, hacemos uso de bibliotecas no estándares, ya que depende de la plataforma o entorno. Algunos entornos permiten este control, mientras que otros no. Bajo MS-DOS y hasta cierto punto bajo MS-Windows, la biblioteca popular es "conio" de Borland. El API de MS-Windows también ofrece funciones para manipular la consola y obviamente las ventanas. Bajo Unix y Linux, podemos usar "ncurses" o "curses". Existen otras bibliotecas no estándares para éstas y otras plataformas.


Espero que esto te ayude.

Steven


Más información sobre la lista de distribución Cconclase