printf设定输出宽度后,数字位数不足,可以用除“0”外的符号填充吗?

使用cout,设定输出宽度后,可以用除“0”外的符号填充。那printf设定输出宽度后,数字位数不足,可以用除“0”外的符号填充吗?

问题解决的话,请点下采纳

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * padleft(char *s, int n, char ch = ' ')
{
    int l = strlen(s);
    char * ns = (char *)malloc(sizeof(char) * (n > l ? n + 1 : l + 1));
    if (l < n)
    {
        memset(ns, ch, n - l);
        strcpy(ns + n - l, s);
    }
    else
    {
        strcpy(ns, s);
    }
    return ns;
}

char * padright(char *s, int n, char ch = ' ')
{
    int l = strlen(s);
    char * ns = (char *)malloc(sizeof(char) * (n > l ? n + 1 : l + 1));
    strcpy(ns, s);
    if (l < n)
    {
        memset(ns + l, ch, n - l);
        ns[n] = '\0';
    }
    return ns;
}

int main()
{
    printf("%s\n", padleft("", 5, '0'));
    printf("%s\n", padleft("", 6, '0'));
    printf("%s\n", padleft("123", 5, '0'));
    printf("%s\n", padleft("123", 5, '*'));
    printf("%s\n", padleft("12345", 5, '0'));
    printf("%s\n", padleft("1234567", 5, '0'));
    printf("%s\n", padright("", 5, '0'));
    printf("%s\n", padright("123", 6, '0'));
    printf("%s\n", padright("123", 5, '0'));
    printf("%s\n", padright("123", 5, '*'));
    printf("%s\n", padright("12345", 5, '0'));
    printf("%s\n", padright("1234567", 5, '0'));
    return 0;
}
00000
000000
00123
**123
12345
1234567
00000
123000
12300
123**
12345
1234567
Press any key to continue . . .