元々はCで、書式付きの表示を行なうための関数。
C言語の他、C言語の元々のプラットフォームであるUNIXのコマンドとして4.3BSD以降で採用され、またUNIXベースの各種言語(awk、perlなど)でも採用されている。
printf(フォーマット文字列, 値1,値2, 値3...)
フォーマット文字列には、次のようなものがある。詳細は後述する。
フォーマット文字列は、出力される書式の体裁を指示するための文字列である。そのまま表示される通常文字に加え、%から始まる変換指定が存在する。
変換指定は、%から始まり、変換指定子で終わる。その間には、0個以上のフラグ、最小フィールド幅、精度、長さ修飾子を、この順序にて置くことができる。
この他にも、実装により独自の拡張が存在する。
10進数で、最小のフィールド幅を指定する(頭文字は0以外)。
値が指定されたフィールド幅よりも小さい時は、フラグの指定により、空白やゼロでパディングされる。
値が指定されたフィールド幅よりも大きい時は、適切な幅に拡張される。
数値の変換では、.(ピリオド)に続いて、10進数で精度桁数を指定できる。なお10進数は省略可能で、.(ピリオド)だけの場合は10進数は0が指定されたものとみなす。
整数変換(d/i/o/u/x/X)では、表示する最小桁数を指定する。
実数変換(a/A/e/E/f/F)では、小数点以下に表示する桁数を指定する。
g/Gの変換では、有効数字(整数桁含む)の最大桁数を指定する。
文字列の変換(s/S)では、出力する最大文字数を指定する。
整数変換(d/i/o/u/x/X)時、その引数の長さを指定する。
バージョンによって追加があるため、その旨も併記する。併記無きものは全バージョンで利用可能。
長さに関してはsigned/unsignedは問わない。どちらでも同じ修飾子を使う。