Estoy tratando de encontrar una buena manera de imprimir los primeros 0, como 01001 para 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 cualquiera de las declaraciones de caso / if para averiguar cuántos dígitos tiene el número y luego convertirlo en una matriz de caracteres con 0 adicionales para imprimir, pero no puedo evitar pensar que puede haber una manera de hacer esto con el sintaxis en formato printf que me está eludiendo.
La solución correcta es almacenar el código postal en la base de datos como un STRING. A pesar de que puede parecer un número, no lo es. Es un código, donde cada parte tiene significado.
Un número es algo en lo que haces aritmética. Un código postal no es eso.
fuente
Coloca un cero antes del ancho mínimo del campo:
fuente
El código postal es un campo altamente localizado, muchos países tienen caracteres en sus códigos postales, por ejemplo, Reino Unido, Canadá. Por lo tanto, en este ejemplo, debe usar un campo de cadena / varchar para almacenarlo si en algún momento estaría enviando u obteniendo usuarios / clientes / clientes / etc. de otros países.
Sin embargo, en el caso general, debe usar la respuesta recomendada (
printf("%05d", number);
).fuente
Si está en una máquina * NIX:
Esto mostrará una página de manual, similar a:
Aunque la pregunta es para C, esta página puede ser de ayuda.
fuente
man
comando, lo reduce a esa sección en particular. Sin él, obtendrá la página de manual para el comando de shell enprintf
lugar de la función C.Aquí, "05" dice "use 5 dígitos con ceros a la izquierda".
fuente
printf permite varias opciones de formato.
ex:
fuente
Se ahorrará un montón de problemas (a largo plazo) si almacena un código postal como una cadena de caracteres, que es, en lugar de un número, que no lo es.
fuente
Más flexible. Aquí hay un ejemplo de impresión de filas de números justificados a la derecha con anchos fijos y relleno de espacio.
La función y la macro están diseñadas para que los printfs sean más legibles.
fuente
#define FMT(x) (getFmt(8,x).c_str())
(¡tenga en cuenta el parámetro x !), En lugar de una variable (que es lo que hace su código).Si necesita almacenar el código postal en un código postal de matriz de caracteres [], puede usar esto:
fuente