5

当我工作时,在代码中的某个地方我看到了以下语句。我对格式说明符感到困惑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  );

有人可以解释一下吗?

4

2 回答 2

6

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

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

于 2010-02-08T11:22:09.597 回答
0

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

* 可以出现在“.”的任一侧,例如:

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

也有效。

于 2010-02-08T11:23:53.680 回答