El especificador de formato es una cadena utilizada en las funciones de entrada y salida formateadas. La cadena de formato determina el formato de entrada y salida. La cadena de formato siempre comienza con un carácter '%'.
Los especificadores de formato comúnmente utilizados en la función printf() son:
especificador de formato | Descripción |
---|---|
%d o %i | Se utiliza para imprimir el valor entero con signo, donde entero con signo significa que la variable puede contener valores tanto positivos como negativos. |
%en | Se utiliza para imprimir el valor entero sin signo donde el entero sin signo significa que la variable solo puede contener valores positivos. |
%O | Se utiliza para imprimir el entero octal sin signo donde el valor entero octal siempre comienza con un valor 0. |
%X | Se utiliza para imprimir el entero hexadecimal sin signo donde el valor entero hexadecimal siempre comienza con un valor 0x. En este, los caracteres alfabéticos se imprimen en letras minúsculas como a, b, c, etc. |
%X | Se utiliza para imprimir el entero hexadecimal sin signo, pero %X imprime los caracteres alfabéticos en mayúsculas como A, B, C, etc. |
%F | Se utiliza para imprimir los valores decimales de punto flotante. De forma predeterminada, imprime los 6 valores después de '.'. |
%y y | Se utiliza para notación científica. También se le conoce como Mantisa o Exponente. |
%gramo | Se utiliza para imprimir los valores decimales de punto flotante y utiliza la precisión fija, es decir, el valor después del decimal en la entrada sería exactamente el mismo que el valor en la salida. |
%pag | Se utiliza para imprimir la dirección en formato hexadecimal. |
%C | Se utiliza para imprimir el carácter sin firmar. |
%s | Se utiliza para imprimir las cadenas. |
%ld | Se utiliza para imprimir el valor entero con signo largo. |
Comprendamos los especificadores de formato en detalle a través de un ejemplo.
int main() { int b=6; int c=8; printf('Value of b is:%d', b); printf(' Value of c is:%d',c); return 0; }
En el código anterior, imprimimos el valor entero de byc usando el especificador %d.
Producción
int main() { int b=10; int c= -10; printf('Value of b is:%u', b); printf(' Value of c is:%u',c); return 0; }
En el programa anterior, mostramos el valor de byc usando un especificador de formato sin signo, es decir, %u. El valor de b es positivo, por lo que el especificador %u imprime el valor exacto de b, pero no imprime el valor de c ya que c contiene el valor negativo.
Producción
int main() { int a=0100; printf('Octal value of a is: %o', a); printf(' Integer value of a is: %d',a); return 0; }
En el código anterior, mostramos el valor octal y el valor entero de a.
Producción
int main() { int y=0xA; printf('Hexadecimal value of y is: %x', y); printf(' Hexadecimal value of y is: %X',y); printf(' Integer value of y is: %d',y); return 0; }
En el código anterior, y contiene el valor hexadecimal 'A'. Mostramos el valor hexadecimal de y en dos formatos. Usamos %x y %X para imprimir el valor hexadecimal donde %x muestra el valor en letras minúsculas, es decir, 'a' y %X muestra el valor en mayúscula, es decir, 'A'.
Producción
int main() { float y=3.4; printf('Floating point value of y is: %f', y); return 0; }
El código anterior imprime el valor flotante de y.
Producción
int main() { float y=3; printf('Exponential value of y is: %e', y); return 0; }
Producción
int main() { float y=3; printf('Exponential value of y is: %E', y); return 0; }
Producción
int main() { float y=3.8; printf('Float value of y is: %g', y); return 0; }
En el código anterior, mostramos el valor flotante de y usando el especificador %g. El especificador %g muestra la salida igual que la entrada con la misma precisión.
Producción
int main() { int y=5; printf('Address value of y in hexadecimal form is: %p', &y); return 0; }
Producción
int main() { char a='c'; printf('Value of a is: %c', a); return 0; }
Producción
int main() { printf('%s', 'javaTpoint'); return 0; }
Producción
Especificador de ancho de campo mínimo
Supongamos que queremos mostrar una salida que ocupe un número mínimo de espacios en la pantalla. Puede lograr esto mostrando un número entero después del signo de porcentaje del especificador de formato.
int main() { int x=900; printf('%8d', x); printf(' %-8d',x); return 0; }
En el programa anterior, el especificador %8d muestra el valor después de 8 espacios, mientras que el especificador %-8d alineará el valor a la izquierda.
Producción
semillas vs esporas
Ahora veremos cómo llenar los espacios vacíos. Se muestra en el siguiente código:
int main() { int x=12; printf('%08d', x); return 0; }
En el programa anterior, %08d significa que el espacio vacío está lleno de ceros.
Producción
Especificación de precisión
Podemos especificar la precisión usando '.' Operador (punto) seguido de un número entero y un especificador de formato.
int main() { float x=12.2; printf('%.2f', x); return 0; }
Producción