- 追加された行はこの色です。
- 削除された行はこの色です。
*printf関数 [#sfc4bfc3]
画面に出力するには、''printf関数''を使います。
printf関数は、標準入出力ライブラリーのヘッダー・ファイル ''stdio.h'' の中に定義されていて、このライブラリーを読み込まないと使えません。
ライブラリーを読み込むには、 ''#include'' を使い、''< >'' の中にヘッダー・ファイルの名前を指定します。
(ライブラリーについては、後日、詳しく勉強します。)
printfは、''print format''を表していて、書式付き出力という意味です。
*フォーマット指定子 [#occ12f2a]
*変換指定子 [#occ12f2a]
printf関数の中で書式(フォーマット)を指定するものを''フォーマット指定子''といいます。
printf関数の中で書式(フォーマット)を指定するものを''変換指定子''といいます。
フォーマット識別子は、''%'' の記号で始まる文字列で表されます。
変換指定子は、''%'' の記号で始まる文字列で表されます。
**整数・小数を出力する [#q6a112fa]
整数を出力するときは ''%d''、小数を出力するときは ''%f'' をフォーマット指定子として用います。
整数を出力するときは ''%d''、小数を出力するときは ''%f''、小数を指数形式で出力するときは ''%e'' を変換指定子として用います。
たとえば、整数と小数を出力するプログラムは、次のようになります(プログラム1)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 1;
int i = 12345;
double d = 123.456789;
printf("%d\n", i);
printf("%f\n", d);
printf("%e\n", d);
return 0;
}
}}
このプログラムを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
12345
123.456789
1.234568e+02
}}
**演習1 [#p8a9f701]
プログラム1を作成し、実行結果を確認せよ。
**桁数を指定する [#z908f70f]
桁数は、''%'' の後に、''全体の文字数.小数点以下の桁数'' の形で指定します。
全体の文字数だけ、または、小数点以下の桁数だけでも指定できます。
桁数は、''%桁数d'' の形で指定します(プログラム2、一部のみ)。
#geshi(c){{
int i = 12345, j = -987;
printf("%8d\n", i);
printf("%8d\n", j);
}}
#geshi(sh){{
luna% a.out
12345
-987
}}
小数の場合は、''%全体の文字数.小数点以下の桁数f'' の形で指定します。
全体の文字数を省略して、小数点以下の桁数だけでも指定できます(プログラム3、一部のみ)。
#geshi(c){{
int main(void) {
int i = 1;
double d = 123.456789;
double d = 123.456789, e = -98.7;
printf("%d\n", i);
printf("%8d\n", i);
printf("%f\n", d);
printf("%8.3f\n", d);
printf("%8.3f\n", e);
printf("%.3f\n", d);
printf("%.3f\n", e);
}}
#geshi(sh){{
luna% a.out
123.457
-98.700
123.457
-98.700
}}
return 0;
}
指数形式の場合は、''%.小数点以下の桁数e'' の形で指定します(プログラム4、一部のみ)。
#geshi(c){{
double d = 123.456789, e = -98.7;
printf("%.5e\n", d);
printf("%.5e\n", e);
}}
#geshi(sh){{
luna% a.out
1.23457e+02
-9.87000e+01
}}
**演習2 [#i822a188]
プログラム1をプログラム2から4に変更し、実行結果を確認せよ。
**ゼロ埋め [#rf97702b]
桁数の前に ''0'' をつけると、0で埋めて表示されます(プログラム5、一部のみ)。
#geshi(c){{
int i = 12345, j = -987;
printf("%08d\n", i);
printf("%08d\n", j);
}}
#geshi(sh){{
luna% a.out
00012345
-0000987
}}
**演習3 [#m9097e33]
プログラム2をプログラム5に変更し、実行結果を確認せよ。
**符号 [#g3ae279e]
''%'' の後ろに ''+'' をつけると、符号が常に出力されます(プログラム6、一部のみ)。
#geshi(c){{
int i = 12345, j = -987;
printf("%+d\n", i);
printf("%+d\n", j);
}}
#geshi(sh){{
luna% a.out
+12345
-987
}}
''%'' の後ろに空白を入れると、値が正のときは + の代わりに空白が出力されます(プログラム7、一部のみ)。
#geshi(c){{
int i = 12345, j = -987;
printf("% d\n", i);
printf("% d\n", j);
}}
#geshi(sh){{
luna% a.out
12345
-987
}}
**演習4 [#k571bfc3]
プログラム5をプログラム6、7に変更し、実行結果を確認せよ。
*左詰め [#y8c55e47]
''%'' の後ろに ''−'' をつけると、左詰めで出力されます(プログラム8、一部のみ)。
#geshi(c){{
int i = 12345, j = -987;
printf("+--------+--------+\n");
printf("|%-8d|%-8d|\n", i, j);
printf("+--------+--------+\n");
}}
#geshi(sh){{
luna% a.out
+--------+--------+
|12345 |-987 |
+--------+--------+
}}
**演習5 [#pd2bdeba]
プログラム7をプログラム8に変更し、実行結果を確認せよ。