'C' の場合、カスタム パディングが必要な場合、malloc() や事前フォーマットを必要としない [s]printf の代わりの (より複雑な) 使用法があります。
秘訣は、%s に '*' 長さ指定子 (最小および最大) を使用し、さらに潜在的な最大長までパディング文字で満たされた文字列を使用することです。
int targetStrLen = 10; // Target output length
const char *myString="Monkey"; // String for output
const char *padding="#####################################################";
int padLen = targetStrLen - strlen(myString); // Calc Padding length
if(padLen < 0) padLen = 0; // Avoid negative length
printf("[%*.*s%s]", padLen, padLen, padding, myString); // LEFT Padding
printf("[%s%*.*s]", myString, padLen, padLen, padding); // RIGHT Padding
「%*.*s」は、LEFT または RIGHT パディングの必要に応じて、「%s」の前後に配置できます。
[####Monkey] <-- Left padded, "%*.*s%s"
[Monkey####] <-- Right padded, "%s%*.*s"
PHP printf ( here ) は、%s 形式内で、一重引用符 (') の後にカスタム パディング文字を使用して、カスタム パディング文字を指定する機能をサポートしていることがわかりました。
printf("[%'#10s]\n", $s); // use the custom padding character '#'
生成:
[####monkey]