c - printf 中的可变大小填充

有没有办法在 printf 中使用可变大小的填充?

我有一个整数表示填充有多大:

void foo(int paddingSize) {
    printf("%...MyText", paddingSize);
}

这应该打印出 ### MyText 其中 paddingSize 应该决定 '#' 符号的数量。

最佳答案

是的,如果您在格式字符串中使用 *,它会从参数中获取一个数字:

printf ("%0*d\n", 3, 5);

将打印“005”。

请记住,您只能使用空格或零填充。如果你想用其他东西填充,你可以使用类似的东西:

#include <stdio.h>
#include <string.h>
int main (void) {
    char *s = "MyText";
    unsigned int sz = 9;
    char *pad = "########################################";
    printf ("%.*s%s\n", (sz < strlen(s)) ? 0 : sz - strlen(s), pad, s);
}

sz 为 9 时输出 ###MyTextsz 为 2 时输出 MyText(无填充但没有截断)。您可能需要检查 pad 是否太短。

https://stackoverflow.com/questions/4133318/

相关文章:

powershell - 在字符串中格式化 PowerShell Get-Date

c# - 扩展内置类型的自定义格式功能

android - 使用电话号码格式 NaN 屏蔽 EditText,如 PhoneNumberUt

python - 如何使用 Python 的 optparse 格式化位置参数帮助?

android - 获取 Google Play 商店应用 HTML 动态徽章

php - 去除字符串中的非数字字符

c++ - 如何使用boost将日期时间格式化为字符串?

c# - 如何避免浪费屏幕空间编写稀疏的 C# 代码?

formatting - d3.js:tickformat - 添加一个 % 符号而不乘以 100

.net - 格式化负 TimeSpan