SALIDA CON FORMATO EN C

La función printf() puede llevar a cabo las siguientes capacidades de formato, algunas de las cuales se analizarán más adelante.

  1. Redondear valores de punto flotante, a un número indicado  de valores decimales.
  2. Alinear una columna de números, con puntos decimales apareciendo uno por encima de otro.
  3. Salidas justificadas a la izquierda o la derecha.
  4. Insertar caracteres literales en posiciones precisas en una línea de salida.
  5. Representación en formato exponencial de números de punto flotante.
  6. Representación en formato octal y hexadecimal de enteros no signados.
  7. Despliegue de todo tipo de datos con anchos de campo de tamaño fijo y precisiones.

La función printf() tiene la forma:

printf (cadena de control de formato, otros argumentos);

La cadena de control de formato describe el formato de salida, y otros argumentos (opcionales) corresponden a cada especificación de conversación existente en la cadena de control de formato. Cada especificación de conversión se inicia con un signo de (%) y termina con un especificador de conversión. En una cadena de control de formato pueden existir muchas especificaciones de conversión.

Imprimiendo enteros con printf()

Los valores enteros se despliegan en uno de varios formatos. En la siguiente tabla se describe cada uno de los especificadores de conversión de enteros.

ESPECIFICADOR DE CONVERSIÓNDESCRIPCIÓN
dLee un entero decimal opcionalmente con signo. El argumento correspondiente es un puntero a un entero.
ILee un entero decimal, octal, o hexadecimal opcionalmente con signo. El argumento correspondiente es un puntero a un entero.
OLee un entero octal sin signo. El argumento correspondiente es un puntero a un entero sin signo.
ULee un entero decimal sin signo. El argumento correspondiente es un puntero a un entero sin signo.
x ó XLee un entero hexadecimal. El argumento correspondiente es un puntero a un entero sin signo.
h ó l[Prefijo] Coloca antes de cualquier especificador de conversión de enteros para indicar que la entrada de datos es un entero de tipo short o long.

 EJEMPLO:

 #include <stdio.h>

 main()

{

printf ("%d\n", 455);
printf ("%i\n", 455);
printf ("%d\n", +455);
printf ("%d\n", -455);
printf ("%hd\n", 32000);
printf ("%ld\n", 2000000000);
printf ("%o\n", 455);
printf ("%u\n", 455);
printf ("%d\n", 455);
printf ("%x\n", 455);
printf ("%X\n", 455);
return 0;

}

SALIDA:

455
455
455
-455
3200
2000000000
707
455
1c7
1C7

Imprimiendo números de punto flotante con printf()

Un valor de punto flotante contiene un punto decimal, como en 86.3 o 159.687. Los valores de punto flotante son desplegados en uno de varios formatos. En la siguiente tabla se describen los especificadores de conversión de punto flotante.

ESPECIFICADOR DE CONVERSIÓNDESCRIPCIÓN
e o EMuestra un valor en punto flotante en notación exponencial.
fMuestra valores en punto flotante.
g o GDespliega un valor en punto flotante, ya sea en la forma de punto flotante f, o en la forma exponencial e (o E).
LSe coloca antes de cualquier especificador de conversión de punto flotante para indicar que esta mostrando un valor de punto flotante long double.

El especificador de conversión g (o G) imprime en formato e (o E), o en formato f, sin ceros después del punto decimal (es decir, 5.36000 se imprime como 5.36).

EJEMPLO:

#include <stdio.h>

main()

{

printf ("%e\n",  1234567.89);
printf ("%e\n",  +1234567.89);
printf ("%e\n",  -1234567.89);
printf ("%E\n", 1234567.89);
printf ("%f\n",  1234567.89);
printf ("%g\n", 1234567.89);
printf ("%G\n",1234567.89); 
return 0;

}

SALIDA:

 1.234568e+06
 1.234568e+06
-1.234568e+06
 1.234568E+06
 1234567.890000
 1.234567e+06
 1.234567E+06

Como imprimir con anchos de campo y precisiones.

El tamaño exacto de un campo en el cual se imprimen datos se especifica por el ancho del campo. Si el ancho del campo es mayor que los datos que se están imprimiendo, a menudo los datos dentro de dicho campo quedarán justificados a la derecha. Un entero que representa el ancho del campo es insertado en la especificación de conversión, entre el signo de porciento (%) y el especificador de conversión.

La función printf () también da la capacidad de definir la precisión con la cual los datos se imprimirán. Para utilizar la precisión se escribe un punto decimal (.) solo o seguido por un número entero. La precisión se aplica solamente a los especificadores de conversión e, E, f, g, G y s. Cuando se utiliza con especificadores de conversión de punto flotante la precisión especifica la cantidad de dígitos que se han de desplegar a la derecha del punto decimal. Si el punto decimal se usa solo, especifica una precisión de cero.

Secuencia de escape

La cadena de control de formato de printf() puede contener secuencias de escape que proporcionan control especial sobre la salida. La siguiente tabla lista las secuencias de escape usadas más frecuentemente.

SECUENCIAS DE ESCAPECARÁCTERSIGNIFICADO
\nNLNueva Lónea
\tHTTab Horizontal
\vVTTab Vertical
\bBSRetroceso
\rCRRegreso de Carro
\fFFAvance de Forma
\aBelSeñal Audible
\\\Diagonal Inversa
\??Interrogación
\'' Apóstrofe
\""Comillas
\ooooooNúmero Octal
\xhhhhNúmero Hexadecimal