在另一个说明符中使用宽度说明符

时间:2018-06-29 21:54:40

标签: c

我是C语言的新手。 我的问题是如何在说明符中使用值(代表宽度说明符)。

int width_specifier = 1;
char* star = "*";

for (width_specifier;width_specifier<10;width_specifier++)
{
  for (int j = 1;j<= width_specifier;j++)
  {
      printf("%width_specifier.s",star);//Problem is here
  }
  printf("\n");

}

4 个答案:

答案 0 :(得分:2)

宽度说明符用于控制要写入的最小字节数。使用"%s",输出将填充' '

int main(void) {
  for (int width_specifier = 1; width_specifier < 10; width_specifier++) {
    printf("%*s\n", width_specifier, "*");
  }
}

输出

*
 *
  *
   *
    *
     *
      *
       *
        *

要在每行without an inner loop中打印各种数量的*,代码可以传递 precision 来限制要用".*s"写入的最大字节数。

int main(void) {
  for (int width_specifier = 1; width_specifier < 10; width_specifier++) {
    int precision = width_specifier;
    printf("%.*s\n", precision, "**********");
  }
}

输出

*
**
***
****
*****
******
*******
********
*********

答案 1 :(得分:0)

如果您阅读例如this printf (and family) reference,您会看到它是(关于要打印的内容的一种有趣的思考)... star

这意味着将读取int参数作为字段宽度。

printf("%*s\n", j, star);

答案 2 :(得分:-1)

就像在the documentation中一样,您总是可以将宽度本身指定为:

printf("%*s", j, star);

此处将j作为宽度参数,将star作为要格式化的值。

答案 3 :(得分:-2)

printf("width_specifier = %c",star);

以及其他格式:regexr.com/2rhq7