スポンサーリンク

PRINTF(1) FreeBSD 一般コマンドマニュアル PRINTF(1)

名称

printf − フォーマット済み出力

書式

printf format [arguments ...]

解説

printf ユーティリティは第一引数より後の引数をフォーマットに合わせて出力し ます。 format は 3 種類のオブジェクトを含む文字列です。一つは通常の文字列 で、単純に標準出力にコピーされます。一つはエスケープシーケンスで、変換さ れてから標準出力にコピーされます。もう一つはフォーマット記述で、これらは それぞれ、後に続く arguments を表示します。

第一引数より後の arguments は、対応するフォーマットが c, b, s のいずれか 場合は文字列として扱われ、それ以外は以下のような拡張部分と合わせて C の定 数として評価されます。

 先頭に ‘‘+’’ や ‘‘-’’ の符号をつけることができます。

もし先頭がシングルクォートやダブルクォートで始まっている場合、 その値は次の文字の ASCII コードになります。

フォーマット文字列は arguments を変換するために何度も再利用されます。余分 なフォーマット記述は 0 やヌル文字列に評価されます。

キャラクタエスケープシーケンスは ANSI X3.159-1989 (‘‘ANSI C’’) の定義を拡 張した、バックスラッシュによる表記です。キャラクタとその意味は以下のよう になります。

\a
<ベル> キャラクタを書きます。
\b

<バックスペース> キャラクタを書きます。
\c

この文字列中の残りのキャラクタを無視します。
\f

<フォームフィード> キャラクタを書きます。
\n

<改行> キャラクタを書きます。
\r

<復帰> キャラクタを書きます。
\t

<タブ> キャラクタを書きます。
\v

<垂直タブ> キャラクタを書きます。

<シングルクォート> キャラクタを書きます。
\\

<バックスラッシュ>キャラクタを書きます。
\
num
\0
num
1 から 3 桁の 8 進数 num で表される ASCII コードの 8 ビット 文字を書きます。

各フォーマットの指定はパーセント文字 (‘‘%’’) から始まります。フォーマット の他の部分は、以下の順番で続きます:

以下のフラグが 0 個以上つきます:

#
‘#’ キャラクタは数値を ‘‘別形式’’ で表示させるという指定 です。 c, d, s フォーマットではこのオプションは無効です。 o フォーマットでは出力文字列の先頭に 0 をつけるため、その 値の精度が上がります。 x (X) フォーマットでは、0 以外の値 なら出力される文字列の先頭に 0x (0X) がつきます。 e, E, f, g, G のフォーマットでは、たとえ小数点以下の値がなくて も常に小数点がつきます (通常のフォーマットでは、小数点以 下の値がある時のみ結果に小数点が含まれます)。 gG の フォーマットでは、結果の終わりに付く 0 は通常のフォーマッ トと違って省略されません。


指定したフィールド幅で 左詰めで出力します。

+
符号つきのフォーマットの時に、数字の前に常に符号がつくよ うになります。

‘ ’
符号つきのフォーマットで正の値を表示する時に先頭に空白が 一つ挿入されます。 ‘+’ と空白の両方が指定された場合、‘+’ が空白に優先されます。

0
‘0’ は空白でパディングする代りに ‘0’ でパディングを行いま す。 ‘−’ と ‘0’ の両方が指定された場合、‘−’ が優先されま す。

フィールド幅:
field width
; フィールド幅を指定するためにオプションとしてつける数 値です。出力する文字列がこのフィールド幅よりも短い場合、フィール ド幅を埋めるように左側が (左詰めの指示があれば、右側が) 空白でパ ディングされます。 (先頭につく 0 はフラグですが、埋め込まれた 0 はフィールド幅の一部であることに注意)

精度:
オプションでつけるピリオド ‘.’, には、 精度を表わす数のオプション が続きます。この数は ef フォーマットの場合に小数点以下の値を 表示する桁数を指定します。 e, f 以外では、文字列から表示される文 字の最大数になります。もし精度を表す数がなければ、精度は 0 とされ ます。

Format:
フォーマットの型を表す文字です ( diouxXfFeEgGaAcsb のうちのいずれ か)。大文字のフォーマットとその小文字版との違いは、前者の出力が完 全に大文字になるということです。

フィールド幅や精度は数字の代りに ‘*’ も使えます。この場合、フィールド幅や 精度は argument で与えます。

フォーマットキャラクタとその意味は以下のようになります:

diouXx
argument
はそれぞれ符号つき 10 進数 (d または i)、符号なし 8 進数 (o)、符号なし 10 進数 (u)、符号なし 16 進数 (X または x) で表示されます。

fF
argument
が ‘[−]ddd.ddd’ のスタイルで表示され、引数の精度で指 定した数だけ小数点以下の d が続きます。精度の指定がなければ 6 文字になります。もし精度が明示的に 0 と指定された場合は小数点 とそれ以下の値は表示されません。値 infinity と NaN は、それぞ れ ‘inf’ と ‘nan’ のように表示されます。

eE
argument
が ‘[-d.ddd±dd]’ のように、小数点の前に数字が一つ で、後には引数の精度で指定した数だけ数字が続きます。精度の指 定がなければ 6 文字になります。値 infinity と NaN は、それぞ れ ‘inf’ と ‘nan’ のように表示されます。

gG
argument
が、最小の長さで最大の精度が得られるように、 f (F) または、 e (E) で表示されます。

aA
argument
が、 ‘[-h.hhh±pd]’ のように、16 進小数点の前は 1 桁 で、小数点の後ろは引数で指定した精度指定と同じだけの桁数で表 示します。精度指定がない場合、引数の倍精度浮動小数点数表現を 保持するのに十分な桁数が生成されます。値 infinity と NaN と は、それぞれ ‘inf’ と ‘nan’, と表示されます。

c
argument
の最初の文字が表示されます。

s
argument
が終わりまでか、または精度で指定された文字数だけ表示 されます。精度が 0 かもしくは指定されていない場合は文字列全て が表示されます。

b
s
と同様ですが、文字列 argument 中のバックスラッシュ表現の キャラクタエスケープを解釈します。

%
‘%’ を表示します。引数は使用しません。

小数点文字は、プログラムのロケール (カテゴリ LC_NUMERIC) で定義されます。

存在しないフィールド、もしくは小さなフィールド幅指定でフィールドが切り詰 められることはありません。指定されたフィールドが実際の幅を越えた時は、パ ディングが起こります。

診断

ユーティリティ printf は、成功すると 0 で、エラーがあった場合は >0 で終了 します。

互換性

伝統的な BSD の動作である、数字で開始しない数値書式引数が、 ASCII コード の最初の文字に変換されるという動作は、サポートされません。

関連項目

echo(1), printf(3)

規格

printf コマンドは、 IEEE Std 1003.2 (‘‘POSIX.2’’) 仕様互換と期待されま す。

歴史

printf は、 4.3BSD−Reno で追加され、標準ライブラリ関数 printf(3) に基いて います。

バグ

浮動小数点数は ASCII から浮動小数点数形式に変換されてまた戻るので、浮動小 数点数の精度が失われます。

ANSI 16 進文字定数はわざと用意されていません。

エスケープシーケンス \000 は文字列終端子です。 format 中に存在すると、 format は文字 \000 のところで切り捨てられます。

フォーマット文字列中のマルチバイト文字は認識されません (これは ‘%’ がマル チバイト文字の内側に出現する可能性がある場合に限られます)。

FreeBSD 10.0 July 3, 2004 FreeBSD 10.0

スポンサーリンク