DMarlon Studio

Lección 4 · 4 de 20

Formatos de printf · C

Domine los especificadores de printf en C: %d, %f, %c y %s, los decimales con %.2f, los anchos de columna, %% y otros formatos para un tique.

C · Formatos de printf en DMarlon Studio: el código del ejemplo y su salida en la terminal

Cada % dentro del texto de printf es un especificador: un hueco que se rellena con el siguiente valor de la lista, en orden. %d es para int, %f para double, %c para char y `%s` para un texto. El tipo tiene que coincidir; si no, el resultado es imprevisible (y -Wall le avisa).

Entre el % y la letra se indica la precisión: %.2f escribe dos decimales (42.75) y %.0f redondea a un número entero (43).

Un número delante es el ancho mínimo de la columna. %5d rellena con espacios por la izquierda hasta 5 caracteres (alineado a la derecha), %-5d alinea a la izquierda y %05d rellena con ceros. Combinados, como %-10s %4d %8.2f, forman las columnas del tique.

Para escribir un signo de porcentaje hay que poner `%%`. Y hay otros formatos útiles: %x escribe un número en hexadecimal (255 es ff) y %e en notación científica.

Código · main.c

#include <stdio.h>int main(void) {    int items = 3;    double total = 42.75;    char size = 'M';    // %d int, %f double, %c char, %s text    printf("%d items, size %c, %s\n", items, size, "paid");    // .2 means two decimals; .0 rounds to a whole number.    printf("Total: %.2f euros\n", total);    printf("Total: %.0f euros (rounded)\n", total);    // A width pads the value: right-aligned by default, - aligns left.    printf("[%5d] [%-5d] [%05d]\n", 42, 42, 42);    // A small receipt in columns.    printf("%-10s %4s %8s\n", "Product", "Qty", "Price");    printf("%-10s %4d %8.2f\n", "T-shirt", 2, 15.0);    printf("%-10s %4d %8.2f\n", "Cap", 1, 12.5);    printf("%-10s %4d %8.2f\n", "Socks", 3, 4.99);    // %% writes a percent sign.    printf("Discount: %d%%\n", 15);    // %x shows hexadecimal, %e scientific notation.    printf("255 in hex: %x, big number: %e\n", 255, 123456.0);    return 0;}

Salida · cc main.c -o main && ./main

3 items, size M, paid
Total: 42.75 euros
Total: 43 euros (rounded)
[   42] [42   ] [00042]
Product     Qty    Price
T-shirt       2    15.00
Cap           1    12.50
Socks         3     4.99
Discount: 15%
255 in hex: ff, big number: 1.234560e+05

Para recordar

  • %d int, %f double, %c char, %s texto.
  • %.2f fija el número de decimales.
  • %8d ocupa 8 caracteres; %-8s alinea a la izquierda.
  • %% escribe el signo %.

Ejercicio

Añada al tique una línea con el total (cantidad por precio de cada producto, sumados) alineada bajo la columna Price.