printf()可变域宽输出

  在用到格式化I0可变域宽的时候,想到只用一个循环实现最初学c语言时的小练习,打印空心三角形,就实现了一下。

  printf("%*d ", m, n);*表示域宽,值由m确定。就由两个可变域宽实现两条边,遗憾的是顶点与底边还得单独实现。

 1 // 只用一次循环,打印空心三角形 
 2 #include <stdio.h>
 3 int main(void)
 4 {
 5     size_t i = 0;
 6     size_t n = 10; 
 7     char s[128] = "* *";
 8     printf("%*c
", n, '*');
 9     for (i = 1; i < n - 1; ++i)
10     {   
11         printf("%*c%*c
", n - i, '*', 2 * i, '*');
12         strcat(s, " *");
13     }   
14     printf("%s
", s); 
15     return 0;
16 }