-1

我是 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

4 回答 4

2

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

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

输出

*
 *
  *
   *
    *
     *
      *
       *
        *

要在没有内部循环*的情况下打印每行的不同数量 ,代码可以传递一个精度来限制要写入的最大字节数。".*s"

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

输出

*
**
***
****
*****
******
*******
********
*********
于 2018-06-30T00:36:29.050 回答
0

如果您阅读例如printf(和家庭)参考资料,您会发现它是(想想您要打印的内容有点有趣)......明星

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

如在

printf("%*s\n", j, star);
于 2018-06-29T21:58:28.260 回答
-1

文档中一样,您始终可以将宽度本身作为说明符:

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

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

于 2018-06-29T21:58:37.150 回答
-2
printf("width_specifier = %c",star);

和其他格式:https ://www.tutorialspoint.com/c_standard_library/c_function_printf.htm

于 2018-06-29T21:59:41.390 回答