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.

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
%dint,%fdouble,%cchar,%stexto.%.2ffija el número de decimales.%8docupa 8 caracteres;%-8salinea 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.