sintaxis - printf y scanf
Formato de printf float con relleno (2)
El siguiente código de prueba produce una salida no deseada, aunque utilicé un parámetro de ancho:
int main(int , char* [])
{
float test = 1234.5f;
float test2 = 14.5f;
printf("ABC %5.1f DEF/n", test);
printf("ABC %5.1f DEF/n", test2);
return 0;
}
Salida
ABC 1234.5 DEF
ABC 14.5 DEF
¿Cómo lograr una salida como esta, qué cadena de formato usar?
ABC 1234.5 DEF
ABC 14.5 DEF
Estás intentando imprimir algo más ancho que 5 caracteres, así que haz que tu especificador de longitud sea más grande:
printf("ABC %6.1f DEF/n", test);
printf("ABC %6.1f DEF/n", test2);
El primer valor no es "dígitos antes del punto", sino "longitud total".
Lo siguiente debe alinear todo correctamente:
printf("ABC %6.1f DEF/n", test);
printf("ABC %6.1f DEF/n", test2);
Cuando ejecuto esto, me sale:
ABC 1234.5 DEF
ABC 14.5 DEF
El problema es que, en %5.1f
, el 5
es el número de caracteres asignados para el número completo, y 1234.5
toma más de cinco caracteres. Esto da lugar a una desalineación con 14.5
, que se ajusta a cinco caracteres.