sprintf関数は文字列をフォーマットする際、数値をゼロ埋めできるフラグが用意されています。
そのフラグを指定すれば、「123」を「000123」にできますし、左詰め・右詰めもできます。
やりかたはとてもカンタンなので、どのようにフラグを指定するのか見ていきましょう。
目次から探す
ゼロ埋めする方法
sprintf関数でゼロ埋めするにはフラグとして0とフィールド幅を指定します。
#include <stdio.h>
int main()
{
long a = 5;;
sprintf("[%04d]", a);
}
[0005]
上記サンプルでは、数値の部分が4文字分となるように、ゼロ埋めを行なっています。
ゼロ埋めする必要がない場合(フィールド幅より桁数が大きい場合)は、ゼロ埋めされずにそのまま出力されます。
#include <stdio.h>
int main()
{
long a = 12345;;
sprintf("[%04d]", a);
}
[12345]
わざわざif文やfor文でゼロ埋めする処理を書かなくても、sprintf関数を使えば1行で済むことなので、覚えておくといざという時に便利です。
左詰め・右詰めする方法
おまけですが、ゼロ埋めではなく左詰め(左寄せ)・右詰め(右寄せ)する方法も見ていきましょう。
右詰めしたい場合は0フラグを与えずに、フィールド幅だけを与えます。
#include <stdio.h>
int main()
{
long a = 5;
printf("[%4d]", a);
}
[ 5]
上記サンプルは数字の部分が4文字分になるように、足りない字数をスペースで補っています。
左詰めしたい場合は、フィールド幅の数値の前に–を指定してください。
#include <stdio.h>
int main()
{
long a = 5;
sprintf("[%-4d]", a);
}
[5 ]
これで左詰めできます。
ゼロ埋め・右詰めの組み合わせはできない
ゼロ埋めしながら右詰めするといったことはsprintf関数ではできません。
ですので、数値を10倍するなりして桁数を増やしたものを使うようにしてください。