Für 'C' gibt es eine alternative (komplexere) Verwendung von [s] printf, für die kein malloc () oder keine Vorformatierung erforderlich ist, wenn eine benutzerdefinierte Auffüllung gewünscht wird.
Der Trick besteht darin, '*' Längenangaben (min und max) für% s sowie eine mit Ihrem Füllzeichen gefüllte Zeichenfolge bis zur maximalen möglichen Länge zu verwenden.
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);
Die "% *. * S" können vor oder nach Ihren "% s" platziert werden, je nachdem, ob Sie eine LINKE oder RECHTE Polsterung wünschen.
[####Monkey] <-- Left padded, "%*.*s%s"
[Monkey####] <-- Right padded, "%s%*.*s"
Ich habe festgestellt, dass PHP printf ( hier ) die Möglichkeit unterstützt, ein benutzerdefiniertes Füllzeichen mit dem einfachen Anführungszeichen (') gefolgt von Ihrem benutzerdefinierten Füllzeichen im% s-Format anzugeben.
printf("[%'#10s]\n", $s); // use the custom padding character '#'
produziert:
[####monkey]