Cómo dar formato a printf () en la programación c
La función de salida más popular de programación C se tiene que printf (). Es de todos favorito. Es una de las primeras funciones que se aprenden en C. Y como uno de los más complejos, es una de las funciones que nadie sabe nunca totalmente.
El poder en printf () reside en su cadena de formato. Ese texto puede ser embalado con texto plano, secuencias de escape, y los personajes de conversión, que son los pequeños goobers ciento que insertan valores en la salida de texto. Son esos personajes de conversión que dan printf () su poder real, y son también uno de los aspectos menos comprendidos de la función.
Cómo dar formato de punto flotante
Puede usar más que el carácter básico de conversión% f para dar formato a los valores de punto flotante. De hecho, aquí es un gran formato que puede utilizar en el printf () de formato al texto de la función:
%w.pF
los w establece el ancho máximo de todo el número, incluido el lugar decimal. los p establece precisión. Por ejemplo:
printf ("% 9.2f", 12.45) -
Esta declaración da salida a cuatro espacios y luego 12.45. Esos cuatro espacios más 12,45 (cinco caracteres en total) son iguales a las 9 de la anchura. Sólo dos valores se muestran a la derecha del punto decimal porque 0.2 se utiliza en el carácter de conversión% f.
Es posible especificar el valor de precisión sin establecer una anchura, pero se debe tener el prefijo por el punto decimal, como en% .2f (punto dos por ciento F). Ver El printf () De punto flotante de formato Gama.
EL Printf () FLOTANTE PUNTOS FORMATEO GAMUT
#include int main () {sample1 float = 34.5-float sample2 = 12,3456789-printf ("%% 9.1f =% 9.1f n", sample1) -printf ("%% 8.1f =% 8.1f n", sample1) -printf (-printf -printf "%% 7.1f =% 7.1f n", sample1) ("%% 6.1f =% 6.1f n", sample1) ("%% 5.1f =% 5.1f "-printf, sample1) (" "-printf, sample1) (" "-printf, sample1) (" n %% 4.1f =% 4.1f n %% 3.1f =% 3.1f n 2.1f %% =% 2.1f n ", sample1) -printf (" %% 1.1f =% 1.1f n ", sample1) -printf (" %% 9.1f =% 9.1f n ", sample2) -printf (" %% 9.2f =% 9.2f n ", sample2) -printf (" %% 9.3f =% 9.3f n ", sample2) -printf (" %% 9.4f =% 9.4f n ", sample2) -printf -printf -printf ("%% 9.5f =% 9.5f n", sample2) ("%% 9.6f =% 9.6f n", sample2) ("%% 9.7f =% 9.7f n ", sample2) -printf (" %% 9.6f =% 9.6f n ", sample2) -printf (" %% 9.7f =% 9.7f n ", sample2) -printf (" %% 9.8f =% 9.8f n ", sample2) -Retorno (0) -}
Ejercicio 1: Escriba el código fuente desde el printf () De punto flotante de formato Gama en su editor. Se parece a un montón de trabajo, pero se puede crear el código de forma rápida mediante el uso de un montón de copiar y pegar.
La salida del Ejercicio 1 ayuda a ilustrar las porciones de anchura y de precisión de la salida de% f del carácter de conversión:
% 9.1f = 34,5% 8.1f = 34,5% 7.1f = 34,5% 6.1f = 34,5% 5.1f = 34,5% 4.1f = 34,5% 3.1f = 34,5% 2.1f = 34,5% 1.1f = 34,5% 9.1f = 12,3 % 9.2f = 12,35% 9.3f = 12,346% 9.4f = 12,3457% 9.5f = 12.34568% 9.6f = 12,345679% 9.7f = 12,3456793% 9.8f = 12,34567928
A partir de esta salida, se puede ver cómo el valor de ancho "pads" los números de la izquierda. A medida que el valor de anchura disminuye, también lo hace el relleno. Sin embargo, cuando la anchura especificada es más ancha que el valor original, se visualiza sin sentido, como se muestra por las dos últimas líneas de salida. Eso es porque el ancho es más allá del límite de precisión simple.
Ajuste del ancho de salida
los w opción utilizada para ancho de salida está disponible para todos los caracteres de conversión, no sólo% f. los ancho es la cantidad mínima de espacio previsto para la salida. Cuando la salida es menor que el ancho, está justo; justificada. Cuando la salida es mayor que la anchura, se ignora la anchura. Ver Messing con el ancho.
Jugar con el ANCHO
main () {printf ("%% 15s =% 15s n", "hola") #include int - printf ("%% 14s =% 14s n", "hola") - printf ("%% 13s = % 13s n "," hola ") - printf (" %% 12s =% 12s n "," hola ") - printf (" %% 11s =% 11s n "," hola ") - printf (" %% 10s =% 10s n "," hola ") - printf (" %% 9s =% 9s n "," hola ") - printf (" %% 8s =% 8s n "," hola ") -printf ("%% 7s =% 7s n", "hola") - printf ("%% 6s =% 6s n", "hola") - printf ("%% 5s =% 5s n", "hola") - printf ("%% 4s =% 4s n", "hola") - retorno (0) -}
Ejercicio 2: Escriba el código fuente de jugar con el ancho en un nuevo proyecto. Genere y ejecute para examinar la salida, que se ve así:
% 15s = hola% 14s = hola% 13s = hola% 12s = hola% 11s = hola% 10s = hola% 9s = hola% 8s = hola% 7s = hola% 6s = hola% 5s = hola% = 4s hola
Al igual que con la opción de ancho para los números de punto flotante (ver el ejercicio anterior), el espacio se rellena a la izquierda cuando la anchura es mayor que la cadena que se muestra. Pero cuando el ancho es menor que la longitud de la cuerda, se sigue mostrando la cadena completa.
Cuando se especifica el valor de anchura para un número entero, que puede ser utilizado a derecha; alinear la salida. Por ejemplo:
printf ("% 4d", valor) -
Esta declaración asegura que la salida para el valor es correcto; justificada y por lo menos cuatro caracteres anchos. Si el valor es menos de cuatro caracteres de ancho, se rellena con espacios a la izquierda. Es decir, a menos que usted se pega un 0 en llegar:
printf ("% 04d", valor) -
En ese caso, el printf () almohadillas de función de la anchura con ceros para mantener todo cuatro caracteres anchos.
Cómo alinear de salida
El valor de anchura en el carácter de conversión de salida se alinea a la derecha, conocida como justificación derecha. Pero no todo está bien. A veces, usted quiere justificación izquierda. Para forzar el relleno en el lado derecho de la salida, inserte un signo menos antes de que el valor de anchura en carácter de conversión% s. Por ejemplo:
printf ("% - 15s", String) -
Esta declaración muestra el texto en la cadena matriz justificado a la izquierda. Si la cadena es más corta de 15 caracteres, se añaden espacios a la derecha.
El código fuente de Reunión en el Oriente muestra dos cuerdas. El primero de ellos se deja; justificada dentro de una gama de diferentes anchos. El ancho se hace más pequeño con cada sentencia printf progresiva ().
ENCUENTRO EN EL MEDIO
#include int main () {printf ("% - 9s me n", "encuentro") - printf ("% - 8s me n", "encuentro") - printf ("% - 7s me n ", "satisfacer") - printf ("% - 6s me n", "encuentro") - printf ("% - 5s me n", "encuentro") - printf ("% - 4s me n", "se reúnen ") -Retorno (0) -}
Ejercicio 3: Copie el formato de código de reuniones en el Oriente en su editor. Crear el programa y ejecutarlo para ver la salida de la alineación demostrado.
Ejercicio 4: Escriba un programa que muestra los nombres y apellidos de los primeros cuatro presidentes de los Estados Unidos. Guarde los nombres en una matriz de caracteres multidimensional. Los nombres tienen que alinearse para que la salida se ve así:
George WashingtonJohn AdamsThomas JeffersonJames Monroe