授業/C言語基礎/画面への出力 のバックアップソース(No.3)

*printf関数 [#sfc4bfc3]

画面に出力するには、''printf関数''を使います。

printf関数は、標準入出力ライブラリーのヘッダー・ファイル ''stdio.h'' の中に定義されていて、このライブラリーを読み込まないと使えません。

ライブラリーを読み込むには、 ''#include'' を使い、''< >'' の中にヘッダー・ファイルの名前を指定します。
(ライブラリーについては、後日、詳しく勉強します。)

printfは、''print format''を表していて、書式付き出力という意味です。


*変換指定子 [#occ12f2a]

printf関数の中で書式(フォーマット)を指定するものを''変換指定子''といいます。

変換指定子は、''%'' の記号で始まる文字列で表されます。


**整数・小数を出力する [#q6a112fa]

整数を出力するときは ''%d''、小数を出力するときは ''%f''、小数を指数形式で出力するときは ''%e'' を変換指定子として用います。

たとえば、整数と小数を出力するプログラムは、次のようになります(プログラム1)。
#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'' の形で指定します。
全体の文字数を省略して、小数点以下の桁数だけでも指定できます(プログラム3、一部のみ)。
#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'' の形で指定します(プログラム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]

''%'' の後ろに ''&minus;'' をつけると、左詰めで出力されます(プログラム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に変更し、実行結果を確認せよ。
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS