printf

printf_fichaLa 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:

listado_printfVemos los especificadores que utiliza printf para formatear y mostrar los datos siendo la salida del programa:

salida_printfVemos 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.

atras

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.