質問

私が働いている間に

、どこかにコード内の私は、次の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