Compartir entrada

miércoles, 1 de mayo de 2013

Secuencias de escape en C


Cuando estamos escribiendo un programa puede que necesitemos representar la información de una forma especial, con ciertas alineaciones, tabulaciones o estilos, en C es posible realizar estas tareas mediante las llamadas secuencias de escape.


Foto tomada de freedigitalphotos.net
Si recordamos el artículo sobre el código ASCII hay 33 símbolos que no se visualizan en la pantalla, esto es debido a que son del tipo No Imprimibles y su papel es el de realizar una acción concreta o insertar un carácter que no es posible visualizarlo.

Dentro de esos caracteres especiales se encuentran las secuencias de escape, en C es posible escribir estos caracteres mediante el uso de la barra invertida “\” seguida de una serie de caracteres. A continuación os detallo las secuencias que se pueden utilizar en C.

Secuencia

Valor

\n
Nueva línea (new line). El cursor pasa a la primera posición de la línea siguiente
\r
Retorno de carro (carriage return). El cursor pasa a la primera posición de la línea donde nos encontremos.
\t
Tabulador. El cursor pasa a la siguiente posición de tabulación.
\a
Alerta. Crea un aviso bien de forma visible o bien mediante sonido.
\b
Espacio atrás (backspace). Hace retroceder el cursor una posición a la izquierda.
\f
Alimentación de página (form feed). Crea una nueva página.
\\
Muestra la barra invertida.
\”
Muestra la comilla doble.
\?
Muestra un interrogante.
\número_octal
Muestra el carácter ASCII correspondiente según el número octal que se haya especificado.
\xnúmero_hexadecimal
Muestra el carácter ASCII correspondiente según el número hexadecimal que se haya especificado.
\v
Tabulación vertical.
\'
Apóstrofo o comilla simple.

Como he dicho otras veces, el ordenador es una máquina muy tonta peroobediente, nosotros seremos los responsables de decirle qué hacer y cómo hacerlo. Para ello utilizaremos las secuencias de escape.

Una ventana de consola en Windows tiene 25 líneas y 80 columnas, por lo tanto es posible mostrar en pantalla de una sola vez hasta 2000 caracteres juntos (recordemos que el espacio es un carácter), es decir, tenemos espacio de sobra para mostrar la información como más nos plazca y con el formato que prefiramos.

Como ejemplo tomaremos el siguiente programa (el clásico Hola Mundo):

#include <stdio.h>

int main(void)
{
   printf( "Hola Mundo" );

   return 0;
}

Una vez que ejecutemos el programa la salida en consola será la siguiente:

Hola Mundo

Ahora utilicemos la secuencia de escape \n de varias formas para ver cómo se mostrará el mensaje.

printf( "Hola Mundo\n" );

La salida esperada será:

Hola Mundo


También se puede utilizar en mitad del texto:

printf( "Hola\nMundo" );

La salida será:

Hola
Mundo

Incluso podemos utilizarlo dentro de las mismas palabras:

printf( "Ho\nla\nMun\ndo" );

La salida será:

Ho
la
Mun
do

Si utilizamos dos instrucciones printf esto no influirá en la visualización:

printf( "Hola" );
printf( "Mundo" );

La salida será:

Hola Mundo

Varias de las formas de obtener el resultado deseado pueden ser las siguientes:

printf( "Hola\n" );
printf( "Mundo" );

o

printf( "Hola" );
printf( "\nMundo" );

Para éstos la salida será:

Hola
Mundo

Podemos utilizar la secuencia de escape \n de cualquiera de las formas que deseemos:

printf( "H\n" );
printf( "o\n" );
printf( "l\n" );
printf( "a\n" );
printf( "\n" );
printf( "M\n" );
printf( "u\n" );
printf( "n\n" );
printf( "d\n" );
printf( "o\n" );

o

printf( "H\no\nl\na\n\nM\nu\nn\nd\no\n" );

La salida será:

H
o
l
a
M
u
n
d
o

Ahora vamos a insertar más espacios para así poder dar la bienvenida como si fuera un título de entrada al programa:

printf( "                                   Hola Mundo" );

Como la ventana de consola tiene 80 columnas he introducido 35 líneas en blanco antes del texto, esto hará que se muestre más o menos centrado en la ventana de consola.

Utilicemos ahora la secuencia de escape \t para insertar tabulaciones.

printf( "Hola\tMundo" );

La salida sería la siguiente:

Hola     Mundo

Con el \t podemos realizar las mismas prácticas que con \n pero debemos tener en cuenta las 80 columnas de la ventana de consola, si superásemos esas 80 columnas el programa comenzaría a escribir en la siguiente línea.

Ahora haremos uso de las comillas dobles dentro de la frase:

printf( "Hola \"Mundo\"" );

La salida sería:

Hola "Mundo"

También es posible combinar varias secuencias de escape para dar formato al texto de salida del programa.

printf( "Hola\n\t\"Mundo\"" );

La salida es:

Hola
            "Mundo"

Conclusiones

Las secuencias de escape constituyen una utilidad importante para dar un formato correcto a nuestro programa, es útil para representar información de una forma gráfica, vistosa y profesional, esencial para mostrar menús o resultados bien representados.

¿Qué otras secuencias de escape conocéis de otros lenguajes?

 
Google+