而我的工作,地方里面的代码,我看到下面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);

也有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top