トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 | 標準出力へ、変換指定に沿って変換された文字列を出力する。 | |||||||||||||||||||||||||||||||||||||||||
ヘッダ | stdio.h | |||||||||||||||||||||||||||||||||||||||||
形式 | int printf(const char* restrict format, …); | |||||||||||||||||||||||||||||||||||||||||
引数 | format | 変換指定を含んだ、あるいは含まないプレーンな文字列。 | ||||||||||||||||||||||||||||||||||||||||
… | format に含まれている変換指定子に対応した個数のパラメータ。 | |||||||||||||||||||||||||||||||||||||||||
戻り値 | 正常に終了した場合は、出力した文字数が返される。エラー発生時は負数が返される。 | |||||||||||||||||||||||||||||||||||||||||
詳細 |
引数format の基本形式は、“%d” や “%s” といった変換指定の開始を意味する %記号と、変換指定子の組み合わせである。この指定の組み合わせ1つにつき、実引数… の個数を1つ増やす。ただし、後述する “%*d” のように、フィールド最小幅指定に * を用いた場合や、“%.*d” のように精度指定に * を用いた場合には、最小幅を指定するための実引数… を1つ追加しなければならない。 変換指定子には以下のものがある。
指定開始文字% の直後には、変換フラグを指定しても良い。変換フラグには以下のものがある。
変換フラグの指定の直後には、フィールド最小幅を指定しても良い。これは 10進整数で表現され、変換結果が最低でも何文字分の領域を使用するかを指定している。たとえば、“%7d” のように指定する。 この指定はあくまでも最小幅であって、これを超える文字数に変換された場合には、その文字数分だけ出力される。最小幅よりも変換結果の文字数の方が小さい場合には何らかの文字で埋められる。このとき使用される文字は、特に指定しなければ空白文字であるが、変換フラグの 0 を使用していれば、0 で埋められる。 フィールド最小幅の指定を * としても良く、この場合には、引数…
の対応する値を調べ、そこに指定されていた整数を最小幅とみなす。たとえば、 フィールド最小幅の指定の直後には、精度を指定しても良い。これは、小数点と 10進整数で表現される。「精度」が意味するところは、変換指定子によって異なり、以下のとおりである。
精度の指定を * としても良く、この場合には、引数…
の対応する値を調べ、そこに指定されていた整数を最小幅とみなす。たとえば、 精度の指定の直後には、変換修飾子を指定しても良い。これには以下のものがある。これらの指定は、変換指定子が n の場合には、対応する実引数がどのような型へのポインタであるかを指示するという意味になる。
|
|||||||||||||||||||||||||||||||||||||||||
注意 |
必要な個数の実引数が指定されていない場合の動作は未定義だが、余分に指定されている場合には、評価は行われるが、printf関数としては無視する。
printf(s);
という呼び出しでは、変数s が “xx%dyy”
のような文字列を保持していると、%d
が変換指定子とみなされる。その結果、指定していない2つ目の実引数を参照しようとするため、不正なデータを読み取ることになる。
|
|||||||||||||||||||||||||||||||||||||||||
使用例 |
実行結果:
|
|||||||||||||||||||||||||||||||||||||||||
関連 |
任意のストリームに対して同様の変換指定を行い出力するには、fprintf関数を使う。変換結果を文字の配列に格納するには
sprintf関数を使う。 |
|||||||||||||||||||||||||||||||||||||||||
解説章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
return 0;
を削除(C言語編全体でのコードの統一)≪さらに古い更新履歴を展開する≫
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |