C格式说明符

时间:2010-02-08 11:13:51

标签: c format-specifiers

当我正在工作时,在代码中的某处我看到了以下语句。 我对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  );

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:6)

.*表示未在格式字符串中指定精度,但是作为必须格式化的参数之前的附加整数值参数。 (d_number)

http://www.cplusplus.com/reference/clibrary/cstdio/printf/

答案 1 :(得分:0)

*由(int)sizeof(dec_number)替换。如果dec_number是int,则在许多机器上它与%0.4d相同。这是用于打印整数或要打印的最大位数的精度

*可以出现在“。”的两侧,例如:

sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);

也有效。