変数の中に入っている値を参照するには、printf
を利用するのが簡単である。
第1日目から使用した printf は書式(format)と変数を指定すると、書式にしたがって変数の中身を表示する。
第1日目は、二重引用符(Double quotation, ")の間に書いた文字が、
そのまま表示されていたが、変数の中身を表示したい場合は、
変数を表示したい部分に % から始まる特別な文字列を入れる。
たとえば、変数 i
の中身を 「i =
」 の後ろに2桁で表示したい場合は
次のように書けば良い。
この % から始まる文字列のことを書式指定とよぶ。
書式指定はman 3 printf
として参照できるマニュアルに現れる言葉に従うと
%[フラグ文字][フィールド幅][. 精度][長さ修飾子]変換指定子
と書くことができる。
省略可能。
省略された場合は、出力は左詰め、数値が入らない桁は空白、 正符合は出力されない。
省略可能。省略された場合は、出力に必要な桁数で表示される。
出力に使用する最小の幅を10進数で指定する。 情報が出力されない桁はデフォルトでは空白文字が出力される。 もし、出力に必要な桁数が指定桁数を越えた場合は、フィールド幅は拡げられる。
省略可能。
ピリオド(".")とそれに続く10進数という形式で指定する。 整数の場合(変換指定子が d, i, o, u, x の場合)は 表示される最小の桁数を指定することになる。 実数の場合(変換指定子が e, f,g の場合)は、 小数点以下の表示桁数を指定する。
省略可能。
整数、実数型とも複数の型が存在しているので、大きさの異なる型として表現したい場合に使用する。
使い方を誤ると、意味不明の出力を得るので注意。
省略不可。
引数を表現する際にどのように変換するかを指定する。代表的なものとしては次のようなものがある。
d,i
: 符合付 10進数に変換する
o
: 符合無 8進数に変換する
u
: 符合無 10進数に変換する
x
: 符合無 16進数に変換する
f
: 固定小数点形式の10進数に変換する(ddd.dddd)
e
: 浮動小数点形式の10進数に変換する(d.dddde[+|-]dd)
g
: f もしくは、 g のうち、桁数が少ない方で表現する
c
: 符号無 char とみなして対応する文字に変換する
p
: ポインタを引数としてアドレス値を16進(%#x形式)で表現する
examples/kadai02/test_printf.c
/* test_printf.c */ #include <stdio.h> int main() { int i; double t; i = 12; t = 314.15926535; printf("i = %d\n", i); i = 35; printf("i = %d\n", i); printf("i = %1d\n", i); printf("i = %2d\n", i); printf("i = %5d\n", i); printf("i = %05d\n", i); printf("i = %o\n", i); printf("i = %x\n", i); printf("i = %c\n", i); printf("t = %f\n", t); printf("t = %e\n", t); printf("t = %6.2f\n", t); printf("&t = %p\n", &t); }