printf("%*s%s",xx,xx,xx);或printf("%*s\n",xx,xx);
我们应该比较熟悉下面这个例子:
#include "stdio.h"
int main()
{
int
a=4;
printf("M\n",a);
return
0;
}
运行结果:
前面有三个空格
printf("%*s",xx,xx);和它类似
“*”表示的是占多少位置
格式控制符“s”表示的是字符串格式控制
第一个参数是占多少位,第二个参数为字符串,两个结合起来的意思就是字符串占多少位,如果不够那么多余位左边用空格来补齐。例如:
#include"stdio.h"
int main()
{
char
*s="12345";
char
ss='a';
printf("%*s\n",10,s);
printf("%*c\n",4,ss);
}
运行结果:
我们可以看到12345前面有五个空格,加上12345总共有10位,a前面有三个空格,加上a总共有四位。
又如以下程序中的:printf("%*s%s%*s",width/4,"
",buf,width/4," ");
#include"stdio.h"
#include"string.h"
void StringInGrid(int width, int height, const char* s)
{
int
i,k;
char
buf[1000];
strcpy(buf, s);
if(strlen(s)>width-2) buf[width-2]=0;
printf("+");
for(i=0;i
printf("+\n");
for(k=1;
k
printf("|");
for(i=0;i
printf("|\n");
}
printf("|");
printf("%*s%s%*s",width/4," ",buf,width/4," ");
printf("|\n");
for(k=(height-1)/2+1; k
printf("|");
for(i=0;i
printf("|\n");
}
printf("+");
for(i=0;i
printf("+\n");
}
int main()
{
StringInGrid(20,6,"abcd1234");
return
0;
}
运行结果: