まず次のプログラムを見てみてください。
#include <stdio.h> int main(void) { int i; i=2; printf("i の引数は %d です。",i); return 0; }
printf関数のカッコ内にある %d がフォーマット指定子と呼ばれるものです。これは右にある i の引数を受け取っています。その引数の値は
2 ですからこのプログラムを実行すると、
i の引数は 2 です。
と表示されます。このようにある変数の値を画面にprintf関数を使って表示したいときにフォーマット指定子を使います。他にも次のようなフォーマット指定子があります。
フォーマット指定子 | 出力形式 |
---|---|
%d | 符号付10進整数 |
%f | 浮動小数点数 |
%e | 指数部付表示 |
%c | 文字 |
%s | 文字列 |
以下に上記のフォーマット指定子を使ったプログラム例を載せときます。
#include <stdio.h> int main(void) { int i; double d; char ch; i=3; d=1.263; ch='A'; printf("%d %f %c %s ",i,d,ch,"aiueo"); return 0; }
実行結果は
3 1.263000 A aiueo
です。
scanf関数は主にキーボードからのコマンドを読み取るために使われます。例えば次のプログラムを見てみてください。
#include <stdio.h> int main(void) { int i; printf("整数を入力してください。"); scanf("%d",&i); printf("入力された整数は %d ",i); return 0; }
プログラムを実行して7を入力してEnterキーを押します。すると結果は
整数を入力してください。7
入力された整数は 7
となります。scanf関数ではキーボードから入力された順に "" 内のフォーマット指定子に左からあてはめられ、右側の変数に格納されます。変数の頭に
& を忘れずにつけてください。scanf関数の処理上、& をつけないと入力され値等を上手く変数に格納できません。printf関数のものと似ていますが次のようなscanf関数のフォーマット指定子があります。
フォーマット指定子 | 入力形式 |
---|---|
%d | 10進整数 |
%f | 浮動小数点数 |
%c | 文字 |
%s | 文字列 |
以下に上記のフォーマット指定子を使ったプログラム例を載せます。
#include <stdio.h> int main(void) { int i; float f; double d; char ch; char str[100]; printf("整数、小数2つ、文字、文字列の順にスペースを空けて入力してください。"); scanf("%d %f %lf %c %s",&i,&f,&d,&ch,&str); printf("%d %f %f %c %s",i,f,d,ch,str); return 0; }
実行結果例は、
整数、小数2つ、文字、文字列の順にスペースを空けて入力してください。1 1.1 1.1 a
aiueo
1 1.100000 1.100000 a aiueo
です。double型の変数に格納するとき scanf関数のフォーマット指定子が %lf となっている点に注意してください。long double型であれば
%Lf となります。