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