Đối với 'C', có cách sử dụng [s] printf thay thế (phức tạp hơn) mà không yêu cầu bất kỳ malloc () hoặc định dạng trước nào, khi muốn có đệm tùy chỉnh.
Mẹo là sử dụng các chỉ định độ dài '*' (tối thiểu và tối đa) cho% s, cộng với một chuỗi chứa đầy ký tự đệm của bạn với độ dài tiềm năng tối đa.
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);
"% *. * S" có thể được đặt trước HOẶC sau "% s" của bạn, tùy thuộc vào mong muốn cho phần đệm TRÁI hoặc PHẢI.
[####Monkey] <-- Left padded, "%*.*s%s"
[Monkey####] <-- Right padded, "%s%*.*s"
Tôi thấy rằng PHP printf ( ở đây ) hỗ trợ khả năng cung cấp một ký tự đệm tùy chỉnh, sử dụng dấu nháy đơn (') theo sau là ký tự đệm tùy chỉnh của bạn , trong định dạng% s.
printf("[%'#10s]\n", $s); // use the custom padding character '#'
sản xuất:
[####monkey]