
C言語基礎|キーボード入力と表示
プログラムを「対話的」にしてみよう
これまでのプログラムでは、
あらかじめ決められた数値を使って計算し、その結果を表示してきました。
しかし、それだけでは少し物足りませんよね。
- 実行するたびに違う値を使いたい。
- 自分で数値を入力して結果を見たい。
そんなときに必要になるのが、
キーボードからの入力 です。
この節では、
キーボードから整数値を読み込み、
その値を使って処理し、画面に表示する方法を学習します。

scanf関数とは何か
C言語で、
キーボードからの入力を行うための関数 が
scanf 関数です。
scanf は
スキャンエフ
と発音します。
| 関数名 | 役割 |
|---|---|
| scanf | キーボードから値を読み込む。 |
| printf | 画面に表示する。 |
これまで使ってきた printf と組み合わせることで、
入力 → 処理 → 表示
という基本的な流れが作れるようになります。
まずは入力した値をそのまま表示する
最初はシンプルに、
入力した整数をそのまま表示するプログラムを作ってみましょう。
プロジェクト名:chap1-11-1 ソースファイル名:chap1-11-1.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 入力した整数を表示する
#include <stdio.h>
int main(void)
{
int value;
printf("数値を入力してください:");
scanf("%d", &value); // 整数を読み込む
printf("入力された値は%dです。\n", value);
return 0;
}実行例
数値を入力してください:42
入力された値は42です。このように、
プログラムが入力を待ち、
入力後に結果を表示する形になります。
scanf関数の書式を確認しよう
scanf 関数の基本的な書式は次のとおりです。
scanf(書式文字列, 変数のアドレス);| 要素 | 意味 |
|---|---|
| 書式文字列 | どの形式で読み込むか |
| 変数のアドレス | 読み込んだ値を格納する場所 |
今回使用している %d は、
10進数の整数を読み込む
という指定です。
なぜ & を付ける必要があるのか
scanf 関数では、
変数名の前に & を付けています。
scanf("%d", &value);これは、
値を入れる箱の場所を教えている
という意味になります。
printf では値を取り出すだけでしたが、
scanf では
変数の中身を書き換える必要がある
ため、& を使って場所を指定します。
| 関数 | & が必要か |
|---|---|
| printf | 不要 |
| scanf | 必要 |
入力した値を使って計算してみよう
次は、
読み込んだ整数を使って計算を行い、
その結果を表示してみましょう。
ここでは、
入力した数を3倍する プログラムに変更します。
プロジェクト名:chap1-11-2 ソースファイル名:chap1-11-2.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 入力した整数を3倍して表示
#include <stdio.h>
int main(void)
{
int number;
printf("整数を入力してください:");
scanf("%d", &number);
printf("その数の3倍は%dです。\n", number * 3);
return 0;
}実行例
整数を入力してください:15
その数の3倍は45です。このように、
入力 → 計算 → 表示
という流れが完成しました。
演算子 * の意味
このプログラムで使っている * は、
乗算(掛け算) を表す演算子です。
number * 3は、
- number に入っている値
- を 3 倍する
という意味になります。
なお、
3 * numberと書いても、同じ結果になります。
キーボード入力を使うと何ができるようになるか
scanf を使えるようになると、
- 実行ごとに違う値で試せる。
- 条件分岐や繰り返しと組み合わせられる。
- 本格的なプログラムに近づく。
といったことが可能になります。
| 要素 | 役割 |
|---|---|
| 変数 | 入力した値を保持 |
| scanf | 入力を受け取る |
| printf | 結果を表示 |
この節で押さえておきたいポイント
| ポイント | 内容 |
|---|---|
| scanf | キーボードから入力する関数 |
| %d | 整数の入力指定 |
| & | 変数の場所を指定 |
| 入力処理 | 値を変数に格納する |
printf と scanf はセットで使われることが多い
という点も覚えておきましょう。
演習問題
演習 1-5
キーボードから整数値を1つ読み込み、
その値に 13 を加えた結果 を表示するプログラムを作成せよ。
(表示例)
整数を入力してください:56
56に13を加えると69です。解答例
プロジェクト名:chap1-11-3 ソースファイル名:chap1-11-3.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 入力した整数に13を加えて表示
#include <stdio.h>
int main(void)
{
int n;
printf("整数を入力してください:");
scanf("%d", &n);
printf("%dに13を加えると%dです。\n", n, n + 13);
return 0;
}演習 1-6
キーボードから整数値を1つ読み込み、
その値から 7 を減じた結果 を表示するプログラムを作成せよ。
(表示例)
整数を入力してください:58
58から7を減じると51です。解答例
プロジェクト名:chap1-11-4 ソースファイル名:chap1-11-4.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 入力した整数から7を引いて表示
#include <stdio.h>
int main(void)
{
int n;
printf("整数を入力してください:");
scanf("%d", &n);
printf("%dから7を減じると%dです。\n", n, n - 7);
return 0;
}