Impresión de 0 iniciales en C

Resuelto zxcv asked hace 16 años • 11 respuestas

Estoy tratando de encontrar una buena manera de imprimir el interlineado 0, como 01001por ejemplo un código postal . Si bien el número se almacenaría como 1001, ¿cuál es una buena manera de hacerlo?

Pensé en usar casedeclaraciones o ifcalcular cuántos dígitos tiene el número y luego convertirlo en una charmatriz con extras 0para imprimir, pero no puedo evitar pensar que puede haber una manera de hacer esto con la printfsintaxis de formato. eso se me escapa.

zxcv avatar Sep 30 '08 23:09 zxcv
Aceptado
printf("%05d", zipCode);

Indica 0con qué está rellenando y 5muestra el ancho del número entero.

Ejemplo 1: si usa "%02d"(útil para fechas), esto solo rellenará ceros para los números en la columna de las unidades. Por ejemplo, 06en lugar de 6.

Ejemplo 2: "%03d"rellenaría 2 ceros para un número en la columna de las unidades y rellenaría 1 cero para un número en la columna de las decenas. Por ejemplo, el número 7 se completó con 007y el número 17 se completó con 017.

EvilTeach avatar Sep 30 '2008 16:09 EvilTeach

La solución correcta es almacenar el código postal en la base de datos como una CADENA. Aunque pueda parecer un número, no lo es. Es un código, donde cada parte tiene un significado.

Un número es algo con lo que se hace aritmética. Un código postal no es eso.

James Curran avatar Sep 30 '2008 16:09 James Curran

Coloca un cero antes del ancho mínimo del campo:

printf("%05d", zipcode);
Adam Bellaire avatar Sep 30 '2008 16:09 Adam Bellaire