C言語において、標準出力(通常は画面)へ書式付きで出力を行うには、標準ライブラリ関数のprintf()を用います。printf()は通称、プリントエフと呼ばれます。
C言語で標準出力に対し書式付きの出力を行うには標準ライブラリのprintf()を用います。printf()を使って出力を行う方法を説明します。
C言語において、標準出力(通常は画面)へ書式付きで出力を行うには、標準ライブラリ関数のprintf()を用います。printf()は通称、プリントエフと呼ばれます。
#include <stdio.h>
int printf(const char *format, ...);
printf()は、formatで与えられた書式付きの文字列を標準出力に出力する関数です。format以外の引数は出力する文字列に埋め込まれるデータになります。戻り値は出力した文字数です。エラー発生の場合は負数が返されます。
formatに与えられるフォーマット文字列の形式は次のとおりです。
%[フラグ][最小フィールド幅][.精度][長さ修飾子]変換文字
[]で括られたものは省略可能です。
フラグには以下のものがあります。
フラグ | 意味 |
---|---|
- | 左揃え |
+ | 常に符号付きで出力 |
スペース | 0以上の場合は符号の代わりにスペースを出力 |
0 | 最小フィールド幅未満の場合、左側を'0'埋め |
# | 別の出力形式を指定(*1) |
(*1) … oなら最初の桁は0になり、xあるいはXなら、0でない結果の先頭に0xまたは0Xが付く。e, E, f, g, Gなら出力に必ず小数点が付く。gとGに関しては最後の0は削除されない。
変換された引数は、少なくとも「最小フィールド幅」で(必要ならそれ以上で)出力されます。最小フィールド幅より小さい場合、フィールド幅を満たすために、通常は左側に、左揃えが指定されている時には右側にパディングが行われます。パディング文字は、ゼロ・パディング・フラグが指定されていれば0で、そうでなければスペースで行われます。
精度は、e, E, fに対しては小数点の後に出力すべき桁数、g, Gに対しては有効数字の数、整数に対しては出力すべき最小桁数です。精度を指定する時はその前に.(ピリオド)を書きます。
長さ修飾子には、h, l(英小文字のエル), Lのいずれかが指定可能です。hは対応する引数をshortまたはunsigned shortとして出力することを示します。l(英小文字のエル)は引数をlongまたはunsigned longとして、Lは引数をlong doubleとして出力することを示します。
変換文字の一覧を以下に示します。
変換文字 | 型 | 意味 |
---|---|---|
d,i | int | 符号付き10進数 |
o | int | 符号なし8進数(先行の0なし) |
x,X | int | 符号なし16進数(Xなら大文字で出力) |
u | int | 符号なし10進数 |
c | int | unsigned charに変換後の文字 |
s | char * | 文字列 |
f | double | 小数形式浮動小数点数 |
e,E | double | 指数形式浮動小数点数(Eなら大文字で出力) |
g,G | double | e,fのうちの適した方(*1)(Gなら大文字で出力) |
p | void * | ポインタの値 |
n | int * | 出力済み文字数を変数に格納 |
% |
| %文字を出力 |
(*1) … 指数が-4よりも小さいか、精度以上の時にはe,Eが使われる。それ以外の場合はfが使われる。後に続く0および小数点は出力されない。