printf格式字符串中的";%-*.*s";有什么意义? [英] What is the meaning of "%-*.*s" in a printf format string?
本文介绍了printf格式字符串中的";%-*.*s";有什么意义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
#define FMT "%-*.*s e = %6ld, chars = %7ld, stat = %3u: %c %c %c %c
"
此宏被传递到printf
函数。%-*.*s
是什么意思?
推荐答案
您可以阅读manual page for printf。但与其说它是教程,不如说它更像是法律课本,所以很难理解。
我不知道*.*
,必须自己阅读手册页。这很有趣。让我们从一个简单的printf("%s", "abc")
开始。它将打印字符串abc
。
printf("%8s", "abc")
将打印 abc
,包括5个前导空格:8是&QOOT;字段宽度&QOOT;。设想一个具有列宽的数据表,以便同一列中的数据垂直对齐。默认情况下,数据右对齐,适合数字。
printf("%-8s", "abc")
将打印abc
,包括5个尾随空格:减号表示字段左对齐。
现在是明星:
printf("%-*s", 8, "abc")
将打印相同的内容。星号表示字段宽度(此处:8)将作为参数传递给printf
。这样就可以通过编程方式更改它。
printf("%-*.10s", 8, "1234567890123")
将仅打印1234567890
,省略最后三个字符:对于字符串,&Quot;Precision&Quot;是最大字段宽度。这是数据被printf
截断的罕见情况之一(舍入也由精度值控制)。
最后
printf("%-*.*s", 8, 10, "1234567890123")
将打印与以前相同的内容,但最大字段宽度也是作为参数给出的。
这篇关于printf格式字符串中的";%-*.*s";有什么意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文