概要

ここまでは出力 (echo) ばかりだったが、プログラムが本当に役に立つのは 外から値を受け取って、それに応じて結果を変える ようになってから。CLI スクリプトで対話的にユーザーから 1 行入力をもらう手段が fgets(STDIN) で、「名前を入力して挨拶を返す」「2 つの数字を足し算する電卓」のようなミニアプリが書けるようになる。

fgets(STDIN) には 2 つの定石 がある。1 つ目は 末尾の改行 \ntrim() で除去する こと。ユーザーが Enter を押すとその改行までが入力に含まれ、そのまま echo で出すと余計な行が増えたり、"5\n" === "5" で比較がズレたりする。2 つ目は 数値として使うときに (int) でキャストする こと。fgets() が返すのは常に文字列なので、暗黙の型変換に頼ると "3a" のような不正値が黙って 3 として扱われる。明示的に (int)trim(fgets(STDIN)) と書く形を手癖にしておきたい。

なお Web の世界では $_GET$_POST で同様の「外から値を受け取る」を行うが、これはブラウザ経由の入力で、本章で扱う CLI の標準入力とは別の仕組みだ。Web 側は後の web トピックで改めて扱うので、ここでは 「CLI ではどう受け取るか」 に集中してよい。

学習目標

ドリル

no 内容
01 入力された文字列をそのまま出力
02 2 行の整数を読んで合計を出力

演習: ドリル 02 — 入力された 2 つの整数を足す

問題

標準入力で 2 行 受け取り、それぞれを整数として読み、合計を出力してください。

入力例:

3
5

期待される出力:

8

ヒント

この章を AI に聞く

  1. 「ch08 — 標準入力」のつまずきやすいポイントを、初学者向けに3つ教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

  2. 「ch08 — 標準入力」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    💬 ChatGPT 📘 Claude ✨ Gemini

  3. 「ch08 — 標準入力」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    💬 ChatGPT 📘 Claude ✨ Gemini

🎉 受講お疲れさまでした!

ch08 — 標準入力」を読み終えました。
学んだことを誰かに教えると、もっと記憶に残ります。

X で共有 Hatena LINE