返回信息流看到一个程序的printf是下面的格式,请问%*ph是什么意思?
size_t len, ret_len;
u8 *buf;
..................//获取buf数据
printf("buf=%*ph len=%0zx -> sts=%d\n", (int)min_t(size_t, ret_len, len), buf, len, ret_len);
这是一条镜像帖。来源:北邮人论坛 / cpp / #79533同步于 2014/5/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问一个奇怪的printf格式化输出问题
iandu
2014/5/20镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
没懂,我这里没有小数点,能否对*ph三个字符逐一解释一下?小白多谢大牛了
【 在 mwlgc 的大作中提到: 】
: 小数点 "." 后 "*" 表示输出位数,具体的数据来自参数表,
: printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”;
: 同样,小数点"."前也可以添加"*",也要用户输入一个位宽值来代替,表示输出的字符所占位宽。
: ...................
举个例子:
printf("%*d\n", 6, 1234);
printf("%*s\n", 6, "abc");
输出为:
##1234
###abc
#表示空格,就是*指定了宽度。。。。
我不知道你那个u8是怎么定义的,有可能是typedef unsigned char u8,%*ph不知道ph是个什么东西。。 【 在 iandu 的大作中提到: 】 : 没懂,我这里没有小数点,能否对*ph三个字符逐一解释一下?小白多谢大牛了 : [ema34] --
多谢多谢
【 在 mwlgc 的大作中提到: 】
: 举个例子:
: [code=c]
: printf("%*d\n", 6, 1234);
: ...................