我正在尝试格式化一些printf语句以允许任意级别的缩进。 理想情况下,我想要以下输出,其中“One”,“Two”等是可变长度日志消息的占位符。
One
Two
Three
Two
One
我正在研究缩进所需的可变长度间距,我知道我可以执行以下操作:
printf( "%*s", indent_level, "" );
但我想知道是否有办法在没有第二个空字符串arg的情况下这样做。
答案 0 :(得分:16)
您可以将要打印的参数作为参数传递:
printf( "%*s", indent_level + strlen(mystr), mystr );
答案 1 :(得分:1)
由于某些原因无法撰写评论,因此张贴为单独的死答案。
>> “当然,如果第一个参数也是可变长度的话 这对你不起作用“
>是的,就是这样;它需要能够处理数字 价值作为第一个参数。
您可以使用dud字符串
printf ("%*s%d", indent_level, "", decimal);
以缩进变长小数。有点笨重,但有效。