printf格式字符串中的"%-*.*s"有什么意义? [英] What is the meaning of "%-*.*s" in a printf format string?

查看:31
本文介绍了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。这样就可以通过编程方式更改它。

现在,关于精度(&Q;&Q;),即: printf("%-*.10s", 8, "1234567890123")将仅打印1234567890,省略最后三个字符:对于字符串,&Quot;Precision&Quot;是最大字段宽度。这是数据被printf截断的罕见情况之一(舍入也由精度值控制)。

最后 printf("%-*.*s", 8, 10, "1234567890123")将打印与以前相同的内容,但最大字段宽度也是作为参数给出的。

这篇关于printf格式字符串中的"%-*.*s"有什么意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆