printf

書式文字列に従って標準出力 (standard output) に出力します.

#include <stdio.h>
int printf(
    const char * restrict format,
    ...
);

printf 関数は format が指す書式文字列に従って標準出力に書き込みを行います.

printf の動作は与えられた引数の前に stdout を引数として付加した fprintf と同じです.

引数

  • format: 書式文字列 (詳しくは以下を参照してください)

書式文字列

書式文字列には通常の多バイト文字 (multibyte character) と変換指定を記述できます.

変換指定の形式は以下の通りです.なお [ ] で囲まれた部分は省略可能です.

%[フラグ][フィールド幅][.精度][長さ修飾子]変換指定子

フラグ

フラグ に指定できる文字は以下の通りです.

フラグ意味
-変換結果をフィールド内に左詰めにする (デフォルトは右詰め)
+変換結果が正,負に関わらず符号を出力する (デフォルトは負の場合のみ出力)
空白変換結果の最初の文字が符号でない場合か,符号付き変換の結果が 0 の場合に空白を結果の前に付ける
#結果を "代替形式"※ に変換する
0出力文字数が最小フィールド幅未満の場合は 0 を埋める

※ 代替形式

  • 変換指定子 o に対して: 必要な場合に精度を増加し,結果の最初を 0 にする
  • 変換指定子 x, X に対して: 0 でない結果の前に 0x を置く
  • 変換指定子 a, A, e, E, f, F に対して: 小数点文字の後ろに数字が続かない場合でも常に小数点文字を表示する
  • 変換指定子 g, G に対して: 小数点文字の後ろに数字が続かない場合でも常に小数点文字を表示する.後ろに続く 0 を結果から取り除かない

長さ修飾子

長さ修飾子 に指定できる文字は以下の通りです.

長さ修飾子意味
hh対応する実引数の型が char 型であることを指定する
h対応する実引数の型が short 型であることを指定する
l (エル)対応する実引数の型が long 型, wchar_t 型であることを指定する
ll (エルエル)対応する実引数の型が long long 型であることを指定する
j対応する実引数の型が intmax_t 型であることを指定する
z対応する実引数の型が size_t 型であることを指定する
t対応する実引数の型が ptrdiff_t 型であることを指定する
L対応する実引数の型が long double 型であることを指定する

変換指定子

変換指定子 に指定できる文字は以下の通りです.大文字の変換指定子を指定すると, 変換される文字が大文字になります.

変換指定子意味
d, iint 型の引数を 10 進符号付き整数に変換する
uunsigned int 型の引数を 10 進符号無し整数に変換する
ounsigned int 型の引数を 8 進符号無し整数に変換する
x, Xunsigned int 型の引数を 16 進符号無し整数に変換する
f, Fdouble 型の引数を小数形式浮動小数点数に変換する
e, Edouble 型の引数を指数形式浮動小数点数に変換する
g, Gf か e のどちらかに変換する (変換の結果として得られる指数が -4 より小さいか,精度以上の場合は e 形式になる)
a, Adouble 型の引数を 16 進浮動小数点に変換する
cint 型の引数を 一端 unsigned char 型に変換し,変換結果の文字を書き込む
s文字配列の先頭要素へのポインタを文字列に変換する
pvoid 型へのポインタを処理系定義の方法で表示文字の並びに変換する
n整数変数に出力済み文字数を格納する (引数は符号付き整数型へのポインタ)
%'%' を出力する

戻り値

  • 成功した場合: 書き出された文字数
  • 失敗した場合: 負の値

cプログラマの必読書

たくさんあるc言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

c実践プログラミング 第3版

c言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


c言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.