授業/C言語基礎/画面への出力
をテンプレートにして作成
開始行:
*printf関数 [#sfc4bfc3]
画面に出力するには、''printf関数''を使います。
printf関数は、標準入出力ライブラリーのヘッダー・ファイル ...
ライブラリーを読み込むには、 ''#include'' を使い、''< >''...
(ライブラリーについては、後日、詳しく勉強します。)
printfは、''print formatted''を表していて、書式付き出力と...
printf関数は、( ) の中に出力する文字列を指定します。
#geshi(c){{
printf(文字列);
}}
変数の値を出力するときは、文字列の中に下で説明する''変換...
#geshi(c){{
printf(文字列, 変数1, 変数2, ...);
}}
*変換指定子 [#occ12f2a]
printf関数の中で書式(フォーマット)を指定するものを''変...
変換指定子は、''%'' の記号で始まる文字列で表されます。
**整数・小数を出力する [#q6a112fa]
整数を出力するときは ''%d''、小数を出力するときは ''%f''...
たとえば、整数と小数を出力するプログラムは、次のようにな...
#geshi(c){{
#include <stdio.h>
int main(void) {
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'' の形で...
全体の文字数を省略して、小数点以下の桁数だけでも指定でき...
#geshi(c){{
double d = 123.456789, e = -98.7;
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
}}
指数形式の場合も、''%全体の文字数.小数点以下の桁数e'' の...
#geshi(c){{
double d = 123.456789, e = -98.7;
printf("%12.3e\n", d);
printf("%12.3e\n", e);
}}
#geshi(sh){{
luna% a.out
1.235e+02
-9.870e+01
}}
**演習2 [#i822a188]
プログラム1をプログラム2から4に変更し、実行結果を確認せよ。
**ゼロ埋め [#rf97702b]
桁数の前に ''0'' をつけると、0で埋めて表示されます(プロ...
#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]
''%'' の後ろに ''+'' をつけると、符号が常に出力されます(...
#geshi(c){{
int i = 12345, j = -987;
printf("%+d\n", i);
printf("%+d\n", j);
}}
#geshi(sh){{
luna% a.out
+12345
-987
}}
''%'' の後ろに空白を入れると、値が正のときは + の代わりに...
#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]
''%'' の後ろに ''−'' をつけると、左詰めで出力されま...
#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に変更し、実行結果を確認せよ。
*エスケープ・シーケンス [#j74b962a]
ダブル・クオーテーション ''"'' や改行など、文字列の中で普...
エスケープ・シーケンスは、バック・スラッシュ ''\'' で始ま...
|エスケープ・シーケンス|意味|h
|\n|改行|
|\t|タブ|
|\b|バック・スペース|
|\"|ダブル・クオーテーション|
|\'|シングル・クオーテーション|
|\\|バック・スラッシュ|
これらはプログラムの中では2文字になっていますが、1文字を...
次のプログラムは、ダブル・クオーテーションで囲まれた文字...
#geshi(c){{
printf("\"Hello World!\"\n");
}}
このプログラムを実行すると、次のように表示されます。
#geshi(sh){{
luna% a.out
"Hello World!"
}}
**演習6 [#o30276f9]
プログラム9を作成し、実行結果を確認せよ。
----
*fflush関数(おまけ) [#x9ff53b8]
printf関数は、バッファー(一時的に情報をためておく場所)...
バッファーは、改行すると自動的にフラッシュされます。
つまり、改行しないとバッファーがフラッシュされず、バッフ...
(プログラムの実行が終了したときなど、改行以外にもバッフ...
これを、''sleep関数''を使って確認してみます。
sleep関数は、( ) の中に指定された秒数だけスリープ(プログ...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!");
sleep(10);
printf("\n")
}
}}
このプログラムを実行すると、10秒たってから、次のように表...
#geshi(sh){{
luna% a.out
Hello World!
}}
つまり、スリープしている時点では、バッファーにたまってい...
''fflush関数''は、バッファーを強制的にフラッシュします。
画面に出力するためのバッファーをフラッシュするときは、ffl...
stdoutは、''standard out''を表し、標準出力を意味します。
上のプログラムを変更し、スリープする前にバッファーを強制...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!");
fflush(stdout);
sleep(10);
printf("\n")
}
}}
このプログラムを実行すると、Hello World!と画面に出力され...
**演習7 [#t90eb45a]
プログラム10を作成し、実行結果を確認せよ。
また、プログラム10をプログラム11に変更し、実行結果を確認...
----
*まとめ [#z943f66e]
画面への出力には''printf関数''を使います。
変数を出力するときは、文字列の中に''変換指定子''を指定し...
改行、ダブル・クオーテーション "、バック・スラッシュ \ な...
----
*練習問題 [#ucf65fec]
練習問題は[[こちら>授業/C言語基礎/画面への出力/練習問題]]。
終了行:
*printf関数 [#sfc4bfc3]
画面に出力するには、''printf関数''を使います。
printf関数は、標準入出力ライブラリーのヘッダー・ファイル ...
ライブラリーを読み込むには、 ''#include'' を使い、''< >''...
(ライブラリーについては、後日、詳しく勉強します。)
printfは、''print formatted''を表していて、書式付き出力と...
printf関数は、( ) の中に出力する文字列を指定します。
#geshi(c){{
printf(文字列);
}}
変数の値を出力するときは、文字列の中に下で説明する''変換...
#geshi(c){{
printf(文字列, 変数1, 変数2, ...);
}}
*変換指定子 [#occ12f2a]
printf関数の中で書式(フォーマット)を指定するものを''変...
変換指定子は、''%'' の記号で始まる文字列で表されます。
**整数・小数を出力する [#q6a112fa]
整数を出力するときは ''%d''、小数を出力するときは ''%f''...
たとえば、整数と小数を出力するプログラムは、次のようにな...
#geshi(c){{
#include <stdio.h>
int main(void) {
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'' の形で...
全体の文字数を省略して、小数点以下の桁数だけでも指定でき...
#geshi(c){{
double d = 123.456789, e = -98.7;
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
}}
指数形式の場合も、''%全体の文字数.小数点以下の桁数e'' の...
#geshi(c){{
double d = 123.456789, e = -98.7;
printf("%12.3e\n", d);
printf("%12.3e\n", e);
}}
#geshi(sh){{
luna% a.out
1.235e+02
-9.870e+01
}}
**演習2 [#i822a188]
プログラム1をプログラム2から4に変更し、実行結果を確認せよ。
**ゼロ埋め [#rf97702b]
桁数の前に ''0'' をつけると、0で埋めて表示されます(プロ...
#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]
''%'' の後ろに ''+'' をつけると、符号が常に出力されます(...
#geshi(c){{
int i = 12345, j = -987;
printf("%+d\n", i);
printf("%+d\n", j);
}}
#geshi(sh){{
luna% a.out
+12345
-987
}}
''%'' の後ろに空白を入れると、値が正のときは + の代わりに...
#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]
''%'' の後ろに ''−'' をつけると、左詰めで出力されま...
#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に変更し、実行結果を確認せよ。
*エスケープ・シーケンス [#j74b962a]
ダブル・クオーテーション ''"'' や改行など、文字列の中で普...
エスケープ・シーケンスは、バック・スラッシュ ''\'' で始ま...
|エスケープ・シーケンス|意味|h
|\n|改行|
|\t|タブ|
|\b|バック・スペース|
|\"|ダブル・クオーテーション|
|\'|シングル・クオーテーション|
|\\|バック・スラッシュ|
これらはプログラムの中では2文字になっていますが、1文字を...
次のプログラムは、ダブル・クオーテーションで囲まれた文字...
#geshi(c){{
printf("\"Hello World!\"\n");
}}
このプログラムを実行すると、次のように表示されます。
#geshi(sh){{
luna% a.out
"Hello World!"
}}
**演習6 [#o30276f9]
プログラム9を作成し、実行結果を確認せよ。
----
*fflush関数(おまけ) [#x9ff53b8]
printf関数は、バッファー(一時的に情報をためておく場所)...
バッファーは、改行すると自動的にフラッシュされます。
つまり、改行しないとバッファーがフラッシュされず、バッフ...
(プログラムの実行が終了したときなど、改行以外にもバッフ...
これを、''sleep関数''を使って確認してみます。
sleep関数は、( ) の中に指定された秒数だけスリープ(プログ...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!");
sleep(10);
printf("\n")
}
}}
このプログラムを実行すると、10秒たってから、次のように表...
#geshi(sh){{
luna% a.out
Hello World!
}}
つまり、スリープしている時点では、バッファーにたまってい...
''fflush関数''は、バッファーを強制的にフラッシュします。
画面に出力するためのバッファーをフラッシュするときは、ffl...
stdoutは、''standard out''を表し、標準出力を意味します。
上のプログラムを変更し、スリープする前にバッファーを強制...
#geshi(c){{
#include <stdio.h>
int main(void) {
printf("Hello World!");
fflush(stdout);
sleep(10);
printf("\n")
}
}}
このプログラムを実行すると、Hello World!と画面に出力され...
**演習7 [#t90eb45a]
プログラム10を作成し、実行結果を確認せよ。
また、プログラム10をプログラム11に変更し、実行結果を確認...
----
*まとめ [#z943f66e]
画面への出力には''printf関数''を使います。
変数を出力するときは、文字列の中に''変換指定子''を指定し...
改行、ダブル・クオーテーション "、バック・スラッシュ \ な...
----
*練習問題 [#ucf65fec]
練習問題は[[こちら>授業/C言語基礎/画面への出力/練習問題]]。
ページ名: