visual sprintf rellenar poner mostrar izquierda con completar ceros agregar c formatting printf

sprintf - printf con ceros a la izquierda en C



rellenar con ceros a la izquierda c# (1)

Tengo un número de punto flotante como 4917.24 . Me gustaría imprimirlo para que siempre tenga cinco caracteres antes del punto decimal, con ceros a la izquierda y luego tres dígitos después del lugar decimal.

Intenté printf("%05.3f", n) en el sistema integrado que estoy usando, pero imprime ***** . ¿Tengo el especificador de formato correcto?


Su especificador de formato es incorrecto. Desde la página man de printf() en mi máquina:

0 Un carácter cero '' 0 '' que indica que se debe usar relleno cero en lugar de relleno en blanco. A '' - '' anula '' 0 '' si se usan ambos;

Ancho de campo: una cadena de dígitos opcional que especifica un ancho de campo ; si la cadena de salida tiene menos caracteres que el ancho del campo, se rellenará en blanco a la izquierda (o derecha, si se ha proporcionado el indicador de ajuste a la izquierda) para compensar el ancho del campo (tenga en cuenta que un cero a la izquierda es una bandera, pero un cero incrustado es parte de un ancho de campo);

Precisión: un período opcional, '' . '', seguido de una cadena de dígitos opcional que proporciona una precisión que especifica el número de dígitos que aparecerán después del punto decimal, para los formatos e y f , o el número máximo de caracteres que se imprimirá a partir de una cadena; si falta la cadena de dígitos, la precisión se trata como cero;

Para su caso, su formato sería %09.3f :

#include <stdio.h> int main(int argc, char **argv) { printf("%09.3f/n", 4917.24); return 0; }

Salida:

$ make testapp cc testapp.c -o testapp $ ./testapp 04917.240

Tenga en cuenta que esta respuesta depende de que su sistema incorporado tenga una implementación de printf() que cumpla con los estándares para estos detalles: muchos entornos integrados no cuentan con dicha implementación.