C言語入門 標準出力

Last-modified: 2018-04-27 (金) 19:46:14
 

目標

標準入出力について理解し、int 型, double 型のデータを任意の形式で出力できる。

標準入力と標準出力

標準入力、標準出力、標準エラー出力は特別なファイルで、プログラム実行時に自動的に開かれます。
デフォルトの状態では、標準入力がキーボード、標準出力及び標準エラー出力がディスプレイになっています。

標準入出力は、リダイレクションにより、ファイルに切り替えたり、
パイプを用いることで他のプロセスに渡したり受け取ったりすることが可能です。

標準入出力を使うためには、#include<stdio.h> の記述が必要です

stdio は、Standard Input Output の略です。

標準出力の利用

printf 関数を利用することで、標準出力が利用できます。
ここでは、printf 関数の使い方をまず説明しましょう。

printf 関数は次のような形式で呼び出します。

 printf("フォーマット文字列", 値1, 値2, ...);

printf のように括弧をつけて呼び出すものを、関数といいます。
そして、関数に渡す値のことを引数 (ひきすう) と呼びます。

printf 関数は、1つ以上の引数を受け取る関数です。

1つ目の引数であるフォーマット文字列は、2つめ以降の引数がどのようなものかを指定するものです。
引数を1つしか使わないという選択も可能です。

printf フォーマット

printf のフォーマット文字列はかなり複雑なため、一般的なものを紹介します。
詳しく知りたい方は、自分で調べて下さい。

正式な書式は次のようになります。

% フラグ フィールド幅 .精度 型修飾 変換文字

このうち、変換文字以外は省略可能です。

フラグ

  • - 左詰めで出力する
  • 0 フィールド幅が指定された場合にゼロで埋める

どちらとも次のフィールド幅指定に関係します。

フィールド幅

フィールド幅を指定すると、出力の幅がこれより小さい場合は空白で埋められます。
また、フラグで0を指定している場合、空白の代わりにゼロで埋められます。

printf("%5d\n", 12);
printf("%-5d\n", 12);
printf("%05d\n", 12);

次のように出力されます。

printf-padding_0.png

精度

小数点以下の桁数を指定するときに使います。
一般的に、四捨五入が行われます。

printf("%.2f", 2.71828);

表示例

2.72

型修飾

int より大きい型や小さい方などを出力する際に使用します。

  • h short
  • l long
  • ll long long
  • L long double

その他の型 (char, int, float, double) ではいりません。

変換文字

必須です。
これだけ指定すれば、とりあえず出力ができます。

  • 整数
    • d 10進数
    • x 16進数
  • 実数
    • f 小数形式で表示

char 型の扱い

C言語では char 型は整数型の中で特殊な型です。
char 型は、1バイトという性質上、文字文字列を表す際に利用されます。
このような char 型の使い方については、後日詳細に扱います。

文字と文字列

プログラミングでは、文字といえば1文字のことをいいます。
複数の文字の場合は文字列といいます。

C言語では、文字をシングルクオーテーション (一重引用符) で囲み、文字列をダブルクオーテーション (二重引用符) で囲みます。

文字列については、また後で詳しく扱います。

printf 関数の使用例

具体的な使用例を紹介します。

単純に数値を表示する (10進数)

int a;
double b;

a = 120;
b = 2.718;

printf("%d\n", a);
printf("%f\n", b);

表示例

120
2.718000

16 進数で表示する

int a;

a = 255;

printf("%x\n", a);

表示例

ff

桁数を指定して表示する

printf("%d|\n", 1);
printf("%5d|\n", 2);
printf("%-5d|\n", 4);
printf("%05d|\n", 8);
printf("%f|\n", 1.6);
printf("%.2f|\n", 3.2);
printf("%5.2f|\n", 6.4);
printf("%-5.2f|\n", 1.28);
printf("%05.2f|\n", 2.56);

表示例

printf-padding2.png

printf 関数以外の方法

printf 関数は万能であり、printf 関数で出力したいものが出力できないということはあまりありません *1

興味のある方は、puts, putchar などのキーワードで検索してみてください。

課題

課題1

まず、int 型の変数 y, m, d を用意して、今日の日付 (年, 月, 日) を代入せよ。
次に、printf 関数を用いて、次に指定する形式で表示しなさい。

年4桁 月2桁 日2桁

月や日が1桁であっても2桁であっても、常に2桁で表示させること。

2011年9月1日

2011 09 01

2011年12月12日

2011 12 12

課題2

double 型の変数 pi に、円周率を小数点以下5桁までの有効数字で代入しなさい。
次に、printf 関数を用いて、変数 pi の値を小数点以下2桁まで表示しなさい。

円周率*2

3.14159

課題 3

double 型の変数 pi, r を定義し、pi には円周率、r には半径 (適当な値) を代入しなさい。
また、それらの変数を用いて、半径 r の円の面積と円周を求めなさい。

 


*1 バイナリデータを除く。
*2 もちろん覚えてますよね。