使用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 . . .