使用printf的可变长度空间

时间:2010-07-09 16:50:59

标签: c printf

我正在尝试格式化一些printf语句以允许任意级别的缩进。 理想情况下,我想要以下输出,其中“One”,“Two”等是可变长度日志消息的占位符。

One
 Two
  Three
 Two
One

我正在研究缩进所需的可变长度间距,我知道我可以执行以下操作:

printf( "%*s", indent_level, "" );

但我想知道是否有办法在没有第二个空字符串arg的情况下这样做。

2 个答案:

答案 0 :(得分:16)

您可以将要打印的参数作为参数传递:

printf( "%*s", indent_level + strlen(mystr), mystr );

答案 1 :(得分:1)

由于某些原因无法撰写评论,因此张贴为单独的死答案。

  

>> “当然,如果第一个参数也是可变长度的话   这对你不起作用“

     

>是的,就是这样;它需要能够处理数字   价值作为第一个参数。

您可以使用dud字符串

printf ("%*s%d", indent_level, "", decimal);

以缩进变长小数。有点笨重,但有效。