質問
私が働いている間に
、どこかにコード内の私は、次の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