Para 'C' hay un uso alternativo (más complejo) de [s] printf que no requiere malloc () o formato previo, cuando se desea un relleno personalizado.
El truco consiste en usar especificadores de longitud '*' (mínimo y máximo) para% s, más una cadena rellena con su carácter de relleno hasta la longitud máxima potencial.
int targetStrLen = 10;
const char *myString="Monkey";
const char *padding="#####################################################";
int padLen = targetStrLen - strlen(myString);
if(padLen < 0) padLen = 0;
printf("[%*.*s%s]", padLen, padLen, padding, myString);
printf("[%s%*.*s]", myString, padLen, padLen, padding);
El "% *. * S" se puede colocar antes O después de su "% s", dependiendo del deseo de relleno IZQUIERDO o DERECHO.
[####Monkey] <-- Left padded, "%*.*s%s"
[Monkey####] <-- Right padded, "%s%*.*s"
Descubrí que PHP printf ( aquí ) admite la capacidad de dar un carácter de relleno personalizado, utilizando comillas simples (') seguidas de su carácter de relleno personalizado , dentro del formato% s.
printf("[%'#10s]\n", $s); // use the custom padding character '#'
produce:
[####monkey]