当我正在工作时,在代码中的某处我看到了以下语句。
我对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 );
有人可以解释一下吗?
答案 0 :(得分:6)
.*
表示未在格式字符串中指定精度,但是作为必须格式化的参数之前的附加整数值参数。 (d_number)
答案 1 :(得分:0)
*由(int)sizeof(dec_number)替换。如果dec_number是int,则在许多机器上它与%0.4d相同。这是用于打印整数或要打印的最大位数的精度。
*可以出现在“。”的两侧,例如:
sprintf(tmp_buf, "%*.*", 0, (int)sizeof(dec_number), d_number);
也有效。