Printf
出典: フリー百科事典『ウィキペディア(Wikipedia)』
この項目の本来の表記は「printf」です。MediaWikiの技術的制限から先頭の小文字が大文字になっています。
Printfは、C言語の標準入出力ヘッダー(<stdio.h>)で宣言されている関数である。引数で与えられた書式付きの文字列を、環境によって設定された標準出力(stdout)に出力する。JIS X 3010:2003においてその機能は「実引数にstdoutを実引数として付加したfprintf関数と等価とする」と規定されている (7.19.6.3)。呼称はプリントエフと呼ばれることが多い。
この関数は、第1引数に与えられた文字列を出力する。C言語の他の単純な入出力関数に比べ、比較的複雑な構造を持っており、第1引数の文字列のなかで書式を指定することで、第2引数以降の任意の数の引数を、書式に従って出力することができる。また、整数型(int型)の戻り値を持ち、出力に成功した場合には転送したバイト数、出力に失敗した場合には負数を返却する。
目次 |
[編集] 形式
#include <stdio.h> int printf(const char *format, ...);
[編集] 書式化文字列
上記形式における第一引数formatは、それに続く実引数の変換方法を指定する。書式化文字列には、通常のマルチバイト文字または'%'で始まる変換指定のいずれかの指令を0個以上含む。多バイト文字が含まれ、かつ文字コードがシフトシーケンスに依存する場合には、書式化文字列は初期シフト状態で始まり、初期シフト状態で終わらなければならない。
[編集] 変換指定
変換指定は次の形式をとる。([ ]内は省略可能)
%[フラグ][最小フィールド幅][.精度][長さ修飾子]変換指定子
[編集] フラグ
変換指定のフラグは以下の通り。
フラグ | 意味 |
---|---|
- | フィールドの左寄せ |
+ | 常に符号を出力 |
空白 | 数値が正または 0 の場合は符合の代わりに空白を出力 |
# | 代替形式。基数を表すプレフィックスの出力等 |
0 | 出力文字数が最小フィールド幅未満の場合は'0'を出力 |
[編集] 長さ修飾子
修飾子 | 意味 | 導入バージョン |
---|---|---|
hh | 実引数は char 型 | C99以降 |
h | 実引数は short 型 | 全バージョン |
l(エル) | 実引数は long 型または wchar_t 型 | wchar_t についてはC95以降 |
ll(エルエル) | 実引数は long long 型 | C99以降 |
j | 実引数は intmax_t 型 | C99以降 |
z | 実引数は size_t 型 | C99以降 |
t | 実引数は ptrdiff_t 型 | C99以降 |
L | 実引数は long double 型 | 全バージョン |
[編集] 変換指定子
指定子 | 意味 | 導入バージョン |
---|---|---|
d, i | 10進符号付き整数 | 全バージョン |
u | 10進符号無し整数 | 全バージョン |
o | 8進符号無し整数 | 全バージョン |
x, X | 16進符号無し整数( X は大文字で出力) | 全バージョン |
e, E | 指数形式浮動小数点数( E は大文字で出力) | 全バージョン |
f, F | 小数形式浮動小数点数( F は大文字で出力) | 全バージョン |
g, G | e または f 形式のうち適した方( G は大文字で出力) | 全バージョン |
a, A | 16進浮動小数点( A は大文字で出力) | C99以降 |
c | 文字 | 全バージョン |
s | 文字列 | 全バージョン |
p | ポインタの値 | 全バージョン |
n | 整数変数に出力済み文字数を格納 | 全バージョン |
% | '%'の出力 | 全バージョン |
[編集] コード例
#include <stdio.h> int main(void) { int a = 1234; printf("%d %o %x\n", a, a, a); printf("%s %c\n", "abc", 'x'); return 0; }
上記のコードをコンパイルし実行すると、次の出力が得られる。
1234 2322 4d2 abc x
[編集] 関連項目
[編集] 参考文献
- JIS X 3010:2003 プログラミング言語C