varias superponer studio modificar lineas graficos graficas ejes c printf

studio - superponer graficas en r



¿Imprimiendo los primeros 0 en C? (10)

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

printf("%05d",zipcode);

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 / si luego para calcular cuántos dígitos es 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 Sintaxis del formato printf que me está eludiendo.


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 cadena / varchar para almacenarlo si en algún momento enviaría o conseguiría usuarios / clientes / clientes / etc. de otros países.

Sin embargo, en el caso general, debe usar la respuesta recomendada ( printf("%05d", number); ).


La solución correcta es almacenar el código postal en la base de datos como STRING. A pesar de que puede parecer un número, no lo es. Es un código, donde cada parte tiene un significado.

Un número es una cosa en la que haces aritmética. Un código postal no es eso.


Más flexible ... Aquí hay un ejemplo de impresión de filas de números justificados a la derecha con anchos fijos, y espacio de relleno.

//---- Header std::string getFmt ( int wid, long val ) { char buf[64]; sprintf ( buf, "% *ld", wid, val ); return buf; } #define FMT (getFmt(8,x).c_str()) //---- Put to use printf ( " COUNT USED FREE/n" ); printf ( "A: %s %s %s/n", FMT(C[0]), FMT(U[0]), FMT(F[0]) ); printf ( "B: %s %s %s/n", FMT(C[1]), FMT(U[1]), FMT(F[1]) ); printf ( "C: %s %s %s/n", FMT(C[2]), FMT(U[2]), FMT(F[2]) ); //-------- Output COUNT USED FREE A: 354 148523 3283 B: 54138259 12392759 200391 C: 91239 3281 61423

La función y la macro están diseñadas para que los printfs sean más legibles.


Si estás en una máquina * NIX:

man 3 printf

Esto mostrará una página de manual, similar a:

0 El valor debe ser cero rellenado. Para las conversiones de d, i, o, u, x, X, a, A, e, E, f, F, g y G, el valor convertido se rellena a la izquierda con ceros en lugar de espacios en blanco. Si aparecen los indicadores 0 y -, se ignora el indicador 0. Si se da una precisión con una conversión numérica (d, i, o, u, xy X), se ignora el indicador 0. Para otras conversiones, el comportamiento es indefinido.

Aunque la pregunta es para C, this página puede ser de ayuda.


Si necesita almacenar el código postal en un código postal de matriz de caracteres [], puede usar esto:

snprintf( zipcode, 6, "%05.5d", atoi(zipcode));


Te ahorrarás un montón de problemas (a largo plazo) si almacenas un código postal como una cadena de caracteres, que es, en lugar de un número, que no lo es.


printf permite varias opciones de formato.

ex:

printf("leading zeros %05d", 123);


printf("%05d", zipCode);


sprintf(mystring, "%05d", myInt);

Aquí, "05" dice "use 5 dígitos con ceros iniciales".