¿Hay una manera de reemplazar el carácter de espacio a 0 en el relleno printf de la anchura del campoprintf Relleno para cuerdas de 0
código utilizado
printf("%010s","this");
no se parece a trabajar para las cadenas !!
¿Hay una manera de reemplazar el carácter de espacio a 0 en el relleno printf de la anchura del campoprintf Relleno para cuerdas de 0
código utilizado
printf("%010s","this");
no se parece a trabajar para las cadenas !!
De hecho, el indicador 0
solo funciona para las conversiones numéricas. Tendrá que hacerlo a mano:
int print_padleftzeroes(const char *s, size_t width)
{
size_t n = strlen(s);
if(width < n)
return -1;
while(width > n)
{
putchar('0');
width--;
}
fputs(s, stdout);
return 0;
}
bien, gracias ..... – Akash
Una versión con menos tipeo: 'printf ("%. * S% s ", n> = 10? 0: (int) (10-n)," 0000000000 ", s);' –
Esto realmente ayuda. Gracias, zwol. –
Prueba esto:
printf("%010d%s", 0, "this");
Eso imprimirá '0000000000' luego la cadena; OP quería un total de 10 caracteres –
¿qué pasa con
test="ABCD"
printf "%0$(expr 9 - ${#test})d%s" 0 $test
que le dará lo que necesita también.
~:00000ABCD
o es usted quiere Padd con otros números simplemente cambiar
printf "%0$(expr 9 - ${#test})d%s" 1 $test
le dará
~:11111ABCD
Bueno, pero eso no es C –
¿Quiere decir el relleno en 'printf', no' scanf', no ¿tú? – zwol
sí, lo siento, simplemente lo edité – Akash
Técnicamente, el modificador '0' dice," Para otras conversiones (* no numérico, por ejemplo,% s *), el comportamiento no está definido. "Creo que las versiones anteriores de HPUX (y tal vez alguna otra System V Unices) en realidad haría esto para (o contra) usted, donde Linux y BSD generalmente no ... – BRFennPocock