【发布时间】:2010-07-09 16:50:58
【问题描述】:
我正在尝试格式化一些 printf 语句以允许任意级别的缩进。 理想情况下,我想要以下输出,其中“一”、“二”等是可变长度日志消息的占位符。
One
Two
Three
Two
One
我正在研究缩进所需的可变长度间距,我知道我可以做到以下几点:
printf( "%*s", indent_level, "" );
但我想知道是否有办法在没有第二个空字符串 arg 的情况下做到这一点。
【问题讨论】:
我正在尝试格式化一些 printf 语句以允许任意级别的缩进。 理想情况下,我想要以下输出,其中“一”、“二”等是可变长度日志消息的占位符。
One
Two
Three
Two
One
我正在研究缩进所需的可变长度间距,我知道我可以做到以下几点:
printf( "%*s", indent_level, "" );
但我想知道是否有办法在没有第二个空字符串 arg 的情况下做到这一点。
【问题讨论】:
您可以将要打印的内容作为参数传递:
printf( "%*s", indent_level + strlen(mystr), mystr );
【讨论】:
由于某种原因无法发表评论,因此作为单独的 necro-answer 发布。
>> "当然,如果第一个参数也是变长的,那么 这对你不起作用”
> 是的,就是这样;它需要能够处理数字 值作为第一个参数。
你可以使用哑字符串
printf ("%*s%d", indent_level, "", decimal);
为了缩进可变长度小数。有点笨拙,但可以。
【讨论】: