La familia printf
tiene otros miembros que gestionan sus argumentos de diferentes modos. Los caracteres ordinarios se transmiten sin modificar a la salida. Los especificadores de conversión hacen que printf
recoja y formatee argumentos adicionales transmitidos como parámetros. Siempre empieza con un carácter %
.
Para mostrar un carácter %
, tiene que usar %%
, para que no se confunda con un especificador de conversión.
Veamos algunos de los especificadores de conversión más usados:
%d
,%i
.- Muestra un entero con decimales.%o
,%x
.- Muestran un entero en octal, hexadecimal.%c
.- Muestra un carácter.%s
.- Muestra una cadena.%f
.- Muestra un número con coma flotante.%e
.- Muestra un número de precisión doble, con un formato fijado.%g
.- Muestra un doble en un formato general.
Es muy importante que el número y el tipo de los argumentos transmitidos a printf
se ajuste a los especificadores de conversión de la cadena format
. Para indicar el tipo de los argumentos enteros que usa un especificador de tamaño opcional. Puede ser h
, por ejemplo %hd
, para indicar un short int
, o l
, por ejemplo %ld
, para indicar ling int
. Si está usando el compilador GNU gcc
, puede añadir la opción -Wformat
a su comando de compilación para hacerlo.
Veamos un listado que resumen el uso de printf y sus especificadores:
Vemos los especificadores que utiliza printf para formatear y mostrar los datos siendo la salida del programa:
Vemos que el especificador %10s coloca diez espacios en blanco antes de la cadena «Hola«, un número negativo significa que el elemento se escribirá con justificación a la izquierda dentro del campo.
Un cero al principio indica que el elemento será escrito con ceros al principio del argumento, printf no trunca los campos, sino que los expande hasta que se ajustan. Por ejemplo, si está intentando mostrar una cadena más larga que el campo, el campo crecería.
La función printf
envían un entero, el número de caracteres escritos. En el caso de sprintf
no incluye el null
de finalización. Cuando tiene lugar un error, estas funciones envían un valor negativo y establecen errno
.
Debe estar conectado para enviar un comentario.