C - ユーザー入力:初めてのガイド
こんにちは、将来のプログラマーたち!今日は、C言語におけるユーザー入力の素晴らしい世界に飛び込みます。あなたの近所の親切なコンピュータ教師として、私はこの旅をステップバイステップで案内します。で、コーヒー(またはあなたのお気に入りの飲み物)を飲みながら、始めましょう!
なぜCでユーザー入力が必要なのか?
計算機プログラムを作成していると imagine してみてください。もしそれがただ 2 + 2 を足すだけのものだったら、それはすごく役立たないでしょう?ユーザー入力が便利に使える的就是ここです!ユーザー入力により、私たちのプログラムは動的で対話的になります。常に同じことをするのではなく、異なる入力に応じて異なる結果を生成することができます。
魔法の杖:scanf()
関数
C言語では、ユーザー入力をキャプチャする魔法の杖はscanf()
関数です。これはユーザーがプログラムにタイプした情報を捕まえる網のようなものです。以下に分解します:
#include <stdio.h>
int main() {
int number;
printf("Enter a number: ");
scanf("%d", &number);
printf("You entered: %d\n", number);
return 0;
}
この例では:
-
int
型の変数number
を宣言します。 - ユーザーに数値を入力するように指示します。
-
scanf()
を使用して入力をキャプチャし、number
に格納します。 - 最後に、ユーザーにその数値を表示します。
scanf()
の%d
は「ここに整数が来ることを期待して」と言っています。number
の前にある&
は「このメモリアドレスに输入を格納して」と言っています。
入力の種類:探求しよう!
整数入力
整数の入力方法はすでに見ました。もっと複雑な例を試してみましょう:
#include <stdio.h>
int main() {
int age, year;
printf("Enter your age and birth year: ");
scanf("%d %d", &age, &year);
printf("You are %d years old and were born in %d.\n", age, year);
return 0;
}
ここでは、一度に二つの整数をキャプチャしています!%d %d
の間のスペースは、scanf()
に「入力の間にスペースまたは改行を期待して」と言っています。
浮動小数点数入力
小数点のある数が必要な場合はどうでしょうか?浮動小数点数を入力します!
#include <stdio.h>
int main() {
float height, weight;
printf("Enter your height (m) and weight (kg): ");
scanf("%f %f", &height, &weight);
printf("You are %.2f meters tall and weigh %.1f kg.\n", height, weight);
return 0;
}
浮動小数点数には%f
を使用します。出力では.2f
と.1f
で小数点以下の桁数を制御します。
文字入力
時々、単なる一文字が必要な場合があります:
#include <stdio.h>
int main() {
char grade;
printf("Enter your grade (A-F): ");
scanf(" %c", &grade); // `%c`の前にスペースを注意
printf("You got a %c. ", grade);
if (grade == 'A' || grade == 'B')
printf("Great job!\n");
else if (grade == 'C')
printf("Not bad, keep improving!\n");
else
printf("Let's work harder next time!\n");
return 0;
}
%c
の前にスペースがあるのは非常に重要です!これはscanf()
に「空白(改行など)をスキップしてから文字を読み取る」と言っています。
文字列入力
最後に、全文をキャプチャしましょう:
#include <stdio.h>
int main() {
char name[50]; // 文字列を格納する配列
printf("What's your name? ");
scanf("%49s", name); // `%49s`でバッファオーバーフローを防止
printf("Hello, %s! Welcome to C programming!\n", name);
return 0;
}
以下の点に注意してください:
- 文字列を格納するために文字の配列を使用します。
-
scanf()
のname
の前に&
は不要です。配列名は既にアドレスです。 -
%49s
は入力を49文字に制限し、バッファオーバーフローを防止します。
scanf()
関数:詳しく見てみよう
私たちが見たさまざまな書式指定子をまとめます:
書式指定子 | データ型 |
---|---|
%d | 整数 |
%f | 浮動小数点数 |
%c | 文字 |
%s | 文字列 |
scanf()
は強力ですが、油断ならないものです。常に入力が成功したか確認します:
#include <stdio.h>
int main() {
int num;
printf("Enter a number: ");
if (scanf("%d", &num) == 1) {
printf("You entered: %d\n", num);
} else {
printf("Invalid input!\n");
}
return 0;
}
これはscanf()
が1つの値を無事に読み取れたか確認します(== 1
)。
締め括り
ふー!今日はたくさんのことをカバーしました。整数から文字列まで、私たちのCプログラムを対話的になる方法を探求しました。練習すれば完璧になります。さまざまな種類の入力をプログラムに組み合わせてみてください。シンプルなゲームを作って、プレイヤーの名前、年齢、お気に入りの数を尋ねるしてみてください?
プログラミングは新しい言語を学ぶのと同じで、どれだけ使うかでどれだけ自然になるかです。codingを続け、実験を続け、最も重要なのは楽しむことです!いつもプログラマーは初めての経験者だったことを忘れないでください。困った場合は、気兼ねなく質問をし、助けを求めてください。
次回まで、ハッピーコーディング!
Credits: Image by storyset