トップページ > キーワード検索 > printf()
C言語規格
C言語(その他)
プログラム
その他
printf()
機能 指定の書式に従って標準出力ストリームへデータを出力することを表す。
stdoutを指定したfprintf関数と等価
定義 #include <stdio.h>

int printf ( const char * format, ... );

※C99規格では以下の定義となる
int printf ( const char * restrict format, ... );
引数
format変換書式文字列。
変換指定は文字%から始まり以下の指定が可能である。変換指定以外の文字列は記述どおりに出力される。
※ ? や " などの文字は拡張表記文字で記述する必要がある

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

フラグ変換指定の意味を修飾する(0個以上指定可能)
フラグ意味
-変換結果をフィールド内の左詰にする(指定無しは右詰となる)
+符号付き変換の結果に対して常に符号を表示する
空白符号付き変換の結果に対して正の値の場合に符号の代わりに空白を表示する
#結果を代替形式に変換する(o変換では最初に0を付加、x変換では最初に0xを付加、a,e,f,g変換では常に小数点文字を表示)
0フィールド幅に対して空白の代わりに0を付加する
フィールド幅変換の結果の文字列がフィールド幅に満たない場合にフィールド幅に満たすまで空白を詰める(非負の10進整数で指定)。
アスタリスク*を用いると可変引数より値(int型)を持ってくる。
精度出力する数の個数を表す(ピリオド.の後に10進整数で指定)。変換指定子によって表現は異なる。
変換指定子表現
d, i, o, u, x, X出力する数字の最小の個数
a, A, e, E, f, F小数点文字の後ろに出力すべき数字の個数
g, G最大の有効桁数
s書き込み最大のバイト数
アスタリスク*を用いると可変引数より値(int型)を持ってくる。
長さ修飾子引数の大きさを指定する
長さ修飾子意味
hh(C99規格) signed char型またはunsigned char型であることを指定する
hshort int型またはunsigned short int型であることを指定する
llong int型またはunsigned long int型であることを指定する
ll(C99規格) long long int型またはunsigned long long int型であることを指定する
j(C99規格) intmax_t型またはuintmax_t型であることを指定する
z(C99規格) size_t型であることを指定する
t(C99規格) ptrdiff_t型であることを指定する
L(C99規格) long double型であることを指定する
変換指定子適用する変換の種類を指定する
変換指定子意味
d, iint型の引数を[-]dddd形式の10進表記に変換する
ounsigned int型の引数をdddd形式の符号無し8進数表記に変換する
uunsigned int型の引数をdddd形式の符号無し10進数表記に変換する
x, Xunsigned int型の引数をdddd形式の符号無し16進数表記に変換する。大文字で指定した場合は大文字表記となる
f, Fdouble型の引数を[-]ddd.ddd形式の10進表記に変換する
e, Edouble型の引数を[-]d.ddd e±dd形式の10進表記に変換する
g, Gdouble型の引数をf形式またはe形式の表記に変換する
a, A(C99規格) double型の引数を[-]0xh.hhhhp±d形式の16進表記に変換する
cint型の引数を1文字に変換する
s引数を文字列に変換する
pvoid型ポインタの引数をポインタの表示文字の並びに変換する
n符号付き整数型ポインタの引数に、これまでに出力ストリームに書き込まれた文字数を格納する
%%を出力する
...出力する変数群(可変引数)
戻り値 書き出された文字数を返す。
エラーが発生した場合は負の値を返す。
実装例
#include <stdio.h>

int main(void)
{
    int n    = 123;
    double f = 123.45;
    char c   = 'a';
    char s[] = "abc";
    int ret;
    
    ret = printf("%d\n", n);      /* 整数値を出力           */
    
    printf("ret=%d\n", ret);      /* printfの戻り値を出力   */
    
    printf("double=%f\n", f);     /* 浮動小数点値を出力     */
    printf("char=%c\n", c);       /* 文字を出力             */
    printf("string=%s\n", s);     /* 文字列を出力           */
    
    printf("double=%7.3f\n", f);  /* 幅7文字で小数点以下3桁 */
    printf("double=%*.*f\n", 6, 1, f); /* フォールド幅、精度を引数から指定 */
    
    printf("pointer=%#p\n", &n);  /* ポインタを出力         */
    
    return 0;
}
実行結果
123
ret=4
double=123.450000
char=a
string=abc
double=123.450
double= 123.5
pointer=0X001BFC98





inserted by FC2 system