まず次のプログラムを見てみてください。
#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 となります。