En el lenguaje C tenemos muchas instrucciones correspondientes al escribir del pseudocódigo. Nos centraremos, por el momento, en una única instrucción: la función printf. La función printf() es una función del lenguaje incluida en la librería stdio.h. Es necesario por tanto para utilizarla incluir este archivo utilizando la directiva #include <stdio.h>.

Que hace la función printf()

La función printf() se utiliza para escribir información para la salida estándar (normalmente la pantalla del ordenador). La estructura de esta función es:

printf ("<especificador de formato>"[, <expresión>, <expresión>, ...]

Los caracteres son delimitados por comillas simples y las cadenas de caracteres son delimitadas por comillas dobles. Un especificador de formato le indica a la función sobre la forma de convertir, dar forma e imprimir sus argumentos. Un especificador de formato comienza con el carácter %. Por ejemplo:

printf ("Hola");

Cuando se ejecuta produce:

Hola

Con un especificador de formato y un argumento:

printf ("El número 66 en decimal es %d" , 66);

Cuando se ejecuta produce:

El número 66 en decimal es 66

La siguiente tabla muestra los diferentes tipos de campos utilizados por la función printf() en los especificadores de formato.

Carácter Argumento Salida resultante
D enter Enter con signo en base decimal
I enter Enter con signo en base decimal
O enter Enter sin signo con base octal
U enter Enter sin signo con base decimal
X enter Enter sin signo con base hexadecimal usando minúscula
X enter Enter sin signo con base hexadecimal usando mayúsculas
F real Número real con signo
E real Número real con signo usando notación e
E real Número real con signo usando notación E
G real Número real con signo con formato e ó f, por de tamaño corto
G real Número real con signo en formato E ó f, por de tamaño corto
C carácter Un carácter 
S cadena de caracteres Una cadena de caracteres 

Puede utilizar más de un especificador de formato en la función printf(). Para ello deben haber tantos argumentos como especificadores de formato. Por ejemplo:

printf ("Un carácter es %c y un número es %d", 'a', 33);

Fíjese que los argumentos van separados por comas.

La sintaxis completa de una especificación de formato es la siguiente:

%[<flags>][<ancho>][.<precisión>][{h|l|L}] <tipo>

Una especificación de formato siempre comienza con %. El resto de los elementos se explican en la tabla siguiente.

Elemento Posibilidades Explicación
flags - Justifica el resultado a la izquierda en el <ancho> especificado. Por defecto, la justificación se hace por la derecha.
+ Inicia siempre la salida con el signo + o − para los valores numéricos. Por defecto sólo aparece el signo − para los valores negativos.
0 Llena la salida con ceros no significativos en el <ancho> especificado.
Espacio Inicia siempre la salida con un espacio en blanco para los valores numéricos positivos. Se ignora si se utiliza junto con +. Función dependiente del <tipo> indicado:
flags #

Tipo c, d, y, u  Se ignora. 

Tipo o, x, X Inicia la salida con 0, 0x, 0X respect.
Tipo de, E, f, g, G Obliga que la salida contenga un punto decimal.
ancho   Número mínimo de posiciones (caracteres) por la totalidad de la salida. Si el valor de la expresión ocupa más caracteres de los especificados, la anchura es incrementada tanto como sea necesario. Este apartado admite la posibilidad de un * (asterisco), el cual indica que el valor que debe considerarse como <ancho> es el resultado de la siguiente expresión en la lista de las expresiones, antes de la expresión que estamos formatando.
precisión 0 Función dependiente del <tipo> indicado:
    Tipo d, y, o, u, x, X, c Se ignora.
    Tipo f, e, E, g, G Sin punto decimal.
   <n> Como mucho, <n> posiciones. 
   * El valor que debe considerarse como <precisión> es el resultado de la siguiente expresión en la lista de las expresiones, antes de la expresión que estamos formatando.
h Se utiliza como prefijo con los tipos d, y, o, x y X para especificar que el valor es short int, o con uno para especificar que es un short unsigned int. Se utiliza como prefijo con los tipos d, y, o, x y X para especificar que el valor es long int, o con uno para especificar que es un long unsigned int. También se utilizacon los tipos e, E, f, gi G para especificar que el valor es double. Se utiliza como prefijo con los tipos de, E, f, gi G para especificar que el valor es long double.  El tipo determina cómo debe ser interpretado el dato de salida: como un char, como un int, como un float, etc. Este apartado también es obligatorio.
l (ela) 
tipos 

Secuencias de escape

El símbolo de barra invertida (\) se llama habitualmente carácter de escape. Se puede pensar en una secuencia de escape utilizada en la función printf ( ) como un escape de la interpretación normal de una cadena de caracteres. Esto significa que el siguiente carácter después del \ tiene un significado especial, como se ve en la siguiente tabla.

Símbolo Efecto
\n Salta a la siguiente línea (line feed).
\r Regreso de carro (carriage return). Provoca ir al inicio de línea.
\t Tabula la salida horizontalmente.
\v Tabula la salida verticalmente.
\b Retroceso (espacio a la izquierda).
\f Provoca salto de página (form feed).
\0 Provoca la aparición del carácter nulo, es decir, el carácter que ocupa el puesto cero en la mesa ASCII.
\a Provoca que suene el altavoz
\\ Provoca la salida de la barra invertida (\).
\' Provoca la salida del cometa simple.
\" Provoca la salida de las dobles comillas (“).
%% Provoca la salida del símbolo tanto por ciento (%).

Ejemplos

Suponiendo que tenemos la siguiente declaración:

int ptas=-25; unsigned int edad=20; float euros=50.5; char sexo='?';
Instrucción Salida efectuada
printf("%o",edat) 24, que es el valor octal de 20 decimal.
printf("%c",sexo) ?
printf("%f",euros) 50.500000
printf("%.4f",euros) 50.5000
printf("%E",euros) 5.05000E+01
printf("%.4e",euros) 5.050e+01
printf("%g",euros) 50.5
printf("%.*E",3,euros) 5.05E+01

 

Pin It