単に指定文字だけ書いた時は必要な幅が確保されて表示されます。
文字 | 使える型 | 用途 | 使用例 |
---|---|---|---|
%c | char | 1文字を出力する | "%c" |
%s | char * | 文字列を出力する | "%4s", "%-8s" |
%d | int, short | 整数を10進で出力する | "%4d","%-4d","%04d" |
%u | unsigned int, unsigned short | 符号なし整数を10進で出力する | "%4u","%04u" |
%o | int, short, unsigned int, unsigned short | 整数を8進で出力する | "%06o","%03o" |
%x | int, short, unsigned int, unsigned short | 整数を16進で出力する | "%02x", "%4x", %02X |
%f | float | 実数を出力する | "%8.2f" |
%e | float | 実数を指数表示で出力する | "%8.3e" |
%g | float | 実数を最適な形式で出力する | "%g" |
%ld | long | 倍精度整数を10進で出力する | "%-12ld" |
%lu | unsigned long | 符号なし倍精度整数を10進で出力する | "%12lu" |
%lo | long, unsigned long | 倍精度整数を8進で出力する | "%12lo" |
%lx | long, unsigned long | 倍精度整数を16進で出力する | "%08lx" |
%lf | double | 倍精度実数を出力する | "%10.3lf" |
表示桁数は<全体の幅>.<小数点以下の幅>で指定する。どちらか片方だけの指定でも良いし、まったく指定しなくても良い。指定がなければデフォルトが使用される。<小数点以下の幅>は、文字列の場合には最大文字数の意味になる。
指定例 | 出力結果 |
---|---|
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] |
数値フィールドの場合に、ゼロ詰めを指定することができる。桁数の指定のまえにゼロを付加する。
指定例 | 出力結果 |
---|---|
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] |