在printf中用星号填充?

Ben*_* C. 4 c printf

我搜索过高和低,但在C中的printf中,似乎只有零填充和空白填充.我想写自己的填充,在这种情况下使用星号.

例如,

假设宽度为8个字符.

输入:123 输出:**123.00

输入:3 输出:****3.00

我怎样才能做到这一点?

caf*_*caf 7

最简单的方法可能是使用snprintf()空格填充打印到缓冲区中,然后用星号替换空格:

void print_padded(double n)
{
    char buffer[9];
    char *p;

    snprintf(buffer, sizeof buffer, "% 8.2f", n);
    for (p = buffer; *p == ' '; p++)
        *p = '*';
    printf("%s", buffer);
}
Run Code Online (Sandbox Code Playgroud)