Đối với 'C', sử dụng 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 tùy chỉnh đệm.
Bí quyết là sử dụng các chỉ số độ dài '*' (tối thiểu và tối đa) cho% s, cộng với chuỗi được điền bằng ký tự đệm của bạn với độ dài tối đa tiềm năng.
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
Có thể đặt "% *. * S" trước OR sau "% s", tùy thuộc vào mong muốn của LEFT hoặc RIGHT padding.
[####Monkey] <-- Left padded, "%*.*s%s"
[Monkey####] <-- Right padded, "%s%*.*s"
tôi phát hiện ra rằng printf PHP (here) không hỗ trợ khả năng để cung cấp cho một nhân vật tùy chỉnh đệm, bằng cách sử dụng dấu nháy đơn (') tiếp theo là nhân vật tùy chỉnh đệm của bạn, trong định dạng% s.
printf("[%'#10s]\n", $s); // use the custom padding character '#'
sản xuất:
[####monkey]
Nguồn
2012-03-16 16:34:38
Điều gì xảy ra nếu bạn muốn chuỗi bị chèn bởi một ký tự khác ngoài dấu cách? Có cách nào để làm printf của w C này? –
Nó không giống như vậy là có thể. (Đã làm một số Googling. Ngoài ra người đàn ông trang cho 'printf' dường như không có bất kỳ dấu hiệu của các tính năng như vậy.) –
@victor - http://www.cplusplus.com/reference/clibrary/cstdio/printf/ - see phần 'cờ' và phần 'chiều rộng'. –