题
而我的工作,地方里面的代码,我看到下面staements。
我收到由格式说明中sprintf
混淆
d_number = strtol( tmp_buf , (char **)NULL, 16);
memset( tmp_buf , ' ' , sizeof( tmp_buf ) );
sprintf( tmp_buf , "%0.*d" , (int)sizeof( dec_number ) , d_number );
可能有人解释一下吗?
解决方案
.*
意味着精度不会在格式字符串指定的,但作为一个附加的整数值的论点,即必须被格式化参数之前。 (d_number)
http://www.cplusplus.com/reference/clibrary/cstdio/的printf /
其他提示
在*被替换(INT)的sizeof(dec_number)。如果dec_number是一个int,在多台机器是一样的%0.4D。这是精度使用其上打印的整数或数字的最大数进行打印。
在*可以在任一侧出现在,例如, “”:
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
也有效。
不隶属于 StackOverflow