Inicio > GNU/Linux > Un mejor uso de printf

Un mejor uso de printf

Domingo, 10 de Mayo de 2009

El infame printf (y las funciones de su familia) ha sido siempre una de las primeras funciones que todo aprendiz de programación en C ha tenido que utilizar. Sin embargo, su uso casi siempre está infravalorado limitándose a escribir por pantalla algún texto con algún parámetro.

Vamos a ver un ejemplo de como aprovechar mejor la familia de funciones printf. Imaginemos que queremos formatear una cadena para mostrar un número en decimal y su equivalente en hexadecimal:

printf("%d en decimal es 0x%X en hexadecimal\n", 12, 12);
El anterior trozo de código produciría esta salida:

12 en decimal es 0xC

Lo podemos poner más bonito. Podemos hacer que el número hexadecimal aparezca con ceros a la izquierda.

printf("%d en decimal es 0x%08X en hexadecimal\n", 12, 12);
Ahora al número hexadecimal se le añadirán tantos 0s como sea necesario hasta tener un número de 8 cifras:

12 en decimal es 0x0000000C en hexadecimal

Aún podemos mejorarlo más. Como se puede ver el parámetro 12 está repetido. Lo suyo sería incluirlo una única vez y que los modificadores de la cadena (%d, %x) hicieran referencia a él. Esto es una extensión de POSIX.

printf("%1$d en decimal es 0x%1$08X en hexadecimal\n", 12);
La salida será la misma con la diferencia de que hemos evitado repetir un parámetro.

12 en decimal es 0x0000000C en hexadecimal

Más info: Wikipedia

superruzafa GNU/Linux

  1. Comentar yet.
  1. Sin trackbacks aún.