C言語のprintfとscanfの使い方を完全ガイド!初心者でもわかる入出力処理
生徒
「C言語で画面に文字を表示したり、数字を入力したりする方法はありますか?」
先生
「もちろんあります。C言語では、printfという命令で画面に文字や数字を表示できます。また、scanfという命令を使うとキーボードから入力した値を読み取れます。」
生徒
「なんだか便利そうですね。具体的にはどう使うんですか?」
先生
「それでは、基本的な使い方を見ていきましょう!」
1. printfで画面に文字を表示しよう
C言語では、画面に表示することを標準出力(ひょうじゅんしゅつりょく)と呼びます。標準出力とは、プログラムが結果を伝えるための方法で、主に画面に文章や数字を表示します。画面に文字を出すための命令がprintfです。プログラムの動作確認やデバッグでも頻繁に使われるため、C言語の学習では必ず覚える必要があります。
例えば、下のような簡単なプログラムで、文章を表示できます。
#include <stdio.h>
int main(void)
{
printf("こんにちは、C言語!\n");
return 0;
}
このプログラムを実行すると、画面には次のように表示されます。
こんにちは、C言語!
このように、printfの括弧の中に表示したい文字を入れれば、画面に文字が出ます。文字の最後にある\nは、改行(かいぎょう)を意味します。改行とは、次の行に移動するための特殊な記号のことです。
2. printfで数値を表示しよう
文字だけでなく、数字を表示することもできます。例えば、計算結果を表示したいときや、変数の中身を確認したいときに便利です。しかし、数字を表示するときは%dや%fといった変換指定子(へんかんしていし)を使います。これは、表示したいデータの種類を指定する記号です。
代表的な変換指定子は次のとおりです。
%d… 整数(せいすう)を表示するときに使う記号%f… 小数を表示するときに使う記号
#include <stdio.h>
int main(void)
{
int a = 10;
float b = 3.14;
printf("整数は%dです。\n", a);
printf("小数は%fです。\n", b);
return 0;
}
整数は10です。
小数は3.140000です。
%dや%fは、数字そのものを入れるのではなく、変換指定子を使って、横にある変数を表示する仕組みです。日本語と変数を混ぜたいときにも便利です。
3. scanfでキーボードから入力しよう
C言語では、キーボードから入力した値を受け取る方法としてscanfを使います。これは標準入力と呼ばれ、プログラムがユーザーの入力を読み取るときに利用します。
次の例では、整数の入力を受け取り、その値を画面に表示します。
#include <stdio.h>
int main(void)
{
int age;
printf("年齢を入力してください:");
scanf("%d", &age);
printf("あなたの年齢は%d歳です。\n", age);
return 0;
}
年齢を入力してください:20
あなたの年齢は20歳です。
scanfで入力するときは、&を付けることが大切です。この記号はアドレス演算子(アドレスえんざんし)と呼ばれ、変数が保存されている場所を示します。scanfが入力を正しく保存するために必要になります。
4. 複数の値を入力するときは?
scanfは複数の入力を読み取ることもできます。例えば、整数と小数の両方を受け取る場合は、次のように書きます。
#include <stdio.h>
int main(void)
{
int x;
float y;
printf("整数と小数を入力してください:");
scanf("%d %f", &x, &y);
printf("入力した整数は%d、小数は%fです。\n", x, y);
return 0;
}
整数と小数を入力してください:5 2.5
入力した整数は5、小数は2.500000です。
入力をスペースで区切ると、複数の値をscanfで受け取ることができます。プログラムの質問に対して答えを入力すると、その結果を確認できるため、初心者の学習でもよく利用されます。
5. よくあるエラーと注意点
scanfを使うとき、特に初心者の方が間違えやすいポイントがあります。例えば、変換指定子と変数の型が合わない場合です。
整数を読み取るのに%fを使ったり、小数を読み取るのに%dを使ったりすると、正しく動きません。型が合っているか、毎回確認する癖を付けましょう。
また、scanfで文字列を受け取る方法もありますが、これはまた別の学習ステップで扱います。まずは整数と小数を入力して表示できるようになれば十分です。
まとめ
printfとscanfでできることを振り返ろう
ここまでの記事では、C言語における入出力処理の基本として、printfとscanfの使い方を順番に学んできました。 printfは、プログラムの中で計算した結果やメッセージを画面に表示するための命令で、動作確認や結果表示に欠かせない存在です。 文字列の表示だけでなく、変数の中身や計算結果を表示できるため、C言語の学習では最初に覚える重要な関数のひとつになります。
一方、scanfはキーボードから入力された値をプログラムに取り込むための命令です。 ユーザーが入力した数値を変数に保存し、その値を使って処理を進めることで、プログラムは一方通行ではなく、対話的な動きをするようになります。 printfとscanfを組み合わせることで、「質問を表示して入力を受け取り、結果を表示する」という基本的な流れが作れるようになります。
変換指定子と変数の関係を理解する
printfやscanfを使う上で特に大切なのが、変換指定子と変数の型を正しく対応させることです。 整数には%d、小数には%fといった決まりがあり、これを間違えると正しい結果が表示されなかったり、入力がうまく受け取れなかったりします。 プログラムが動かない原因の多くは、この指定子と型の不一致にあるため、初心者のうちは特に注意が必要です。
また、scanfでは変数の前に&を付ける必要がある点も重要でした。 これは、入力された値を「変数が保存されている場所」に直接書き込むための仕組みで、C言語らしい考え方のひとつです。 最初は難しく感じるかもしれませんが、「scanfは値を書き込む命令」と覚えると理解しやすくなります。
printfとscanfを組み合わせた基本サンプル
ここで、学んだ内容をまとめたシンプルなサンプルプログラムを確認してみましょう。 ユーザーに数字を入力してもらい、その結果を画面に表示する流れになっています。
#include <stdio.h>
int main(void)
{
int x;
int y;
printf("一つ目の数字を入力してください:");
scanf("%d", &x);
printf("二つ目の数字を入力してください:");
scanf("%d", &y);
printf("入力した数字の合計は%dです。\n", x + y);
return 0;
}
このプログラムでは、printfで入力を促し、scanfで値を受け取り、その結果を再びprintfで表示しています。 C言語の入出力処理の基本的な流れが一通り詰まった例なので、何度も見返して理解を深めておくと安心です。
生徒
「printfとscanfを使うと、画面に表示したり、キーボードから入力したりできるようになるんですね。 最初は難しそうでしたが、流れで見ると少し分かってきました。」
先生
「その感覚で大丈夫ですよ。C言語では、まず入出力の流れを理解することがとても大切です。 printfで何を表示して、scanfで何を受け取るのかを意識すると、プログラム全体が読みやすくなります。」
生徒
「変換指定子や&を忘れないようにするのがポイントですね。 エラーが出たときも、そこを確認すれば原因が分かりそうです。」
先生
「その通りです。入出力はC言語の基礎ですが、これが分かると条件分岐や繰り返し処理とも自然につながっていきます。 焦らず、printfとscanfを使った小さなプログラムを何度も書いて、慣れていきましょう。」