フォーマット指定子一覧
フォーマット指定子とは、C言語のprintf()、fprintf()、sprintf()、scanf()、fscanf()、sscanf()などの関数で使用する、 表示形式を指定するための記述子である。
C言語専用と思っていると、MFC(C++)のCStringクラスやjavaのFormatterクラス(jdk1.5以降)にも使用されていたりして、 やはりしっかり覚えておかなくては、と思わせられることもある(詳細は異なるが)。 度忘れした際にはここを見ればよいように、よく使うフォーマット指定子をここにまとめておく。 なお、ANSI規格での全貌を知りたいときは、fprintfのリファレンス等を参照のこと。
出力フォーマット指定子
printf(),fprintf(),sprintf()などで使用する指定子である。
|
表示桁数の指定
表示桁数は<全体の幅>.<小数点以下の幅>で指定する。どちらか片方だけの指定でも良いし、まったく指定しなくても良い。指定がなければデフォルトが使用される。 <小数点以下の幅>は、文字列の場合には最大文字数の意味になる。
指定例 | 出力結果 | |
---|---|---|
printf("[%8.3f]", 123.45678); |
[ 123.456] |
|
printf("[%15s]", "I am a boy."); |
[ I am a boy.] |
|
printf("[%.6s]", "I am a boy."); |
[I am a] |
|
printf("[%8.3e]", 1234.5678); |
[1.234e+3] |
表示桁数の指定よりも実際の表示文字列が長くなることがある。これはsprintf()の場合に特に注意が必要である。 文字列の格納域と同じサイズにフォーマットを指定しても、配列オーバーを引き起こす可能性のあることを意味するからである。
リーディングゼロの指定
数値フィールドの場合に、ゼロ詰めを指定することができる。桁数の指定のまえにゼロを付加する。
指定例 | 出力結果 | |
---|---|---|
printf("[%08.3f]", 123.45678); |
[0123.456] |
|
printf("[%05d]", 1); |
[00001] |
右詰・左詰の指定
デフォルトでは右詰なので、左詰にしたいときは桁数指定のまえにマイナスをつけなければならない。
指定例 | 出力結果 | |
---|---|---|
printf("[%-15s]", "I am a boy."); |
[I am a boy. ] |
|
printf("[%-8.3f]", 123.45678); |
[123.456 ] |
|
printf("[%-5d]", 1); |
[1 ] |
符号の指定
数値の表示は、デフォルトではプラス記号を出さないので、付けたいときは+を指定する。
指定例 | 出力結果 | |
---|---|---|
printf("[%+5d]", 32); |
[ +32] |
|
printf("[%+5d]", -32); |
[ -32] |
|
printf("[%+8.3f]", 1.414); |
[ +1.414] |
入力フォーマット指定子
scanf(),fscanf(),sscanf()などで使用する指定子である。出力フォーマット指定子とほぼ同じだが、使えないものもある。
|