ダミーの質問があります。整数を0でバッファパディングに出力したいのですが、sprintf
formatで整理できません。私は次を試みています
char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );
次の文字列が欲しい
"000000000000000000000000000324"
私は何を間違えていますか? 30文字の最大幅のために0でパッドすることを意味しませんか?
"%030d"
はあなたが探しているドロイドです
構文が少し間違っています。次のコードは、目的の出力を生成します。
char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );
[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
パディングと幅はbefore型指定子になります:
sprintf( buf, "%030d", my_val );
試してください:
sprintf( buf, "%030d", my_val );
精度と幅のパラメーターは、「%」と変換指定子「d」の間ではなく、後にする必要があります。実際、すべてのフラグはそうです。したがって、正数に先行する「+」が必要な場合は、「%+ d」を使用します。
%030d
、最後にタイプ文字があります。