概要
ここまでは出力 (echo) ばかりだったが、プログラムが本当に役に立つのは 外から値を受け取って、それに応じて結果を変える ようになってから。CLI スクリプトで対話的にユーザーから 1 行入力をもらう手段が fgets(STDIN) で、「名前を入力して挨拶を返す」「2 つの数字を足し算する電卓」のようなミニアプリが書けるようになる。
fgets(STDIN) には 2 つの定石 がある。1 つ目は 末尾の改行 \n を trim() で除去する こと。ユーザーが Enter を押すとその改行までが入力に含まれ、そのまま echo で出すと余計な行が増えたり、"5\n" === "5" で比較がズレたりする。2 つ目は 数値として使うときに (int) でキャストする こと。fgets() が返すのは常に文字列なので、暗黙の型変換に頼ると "3a" のような不正値が黙って 3 として扱われる。明示的に (int)trim(fgets(STDIN)) と書く形を手癖にしておきたい。
なお Web の世界では $_GET や $_POST で同様の「外から値を受け取る」を行うが、これはブラウザ経由の入力で、本章で扱う CLI の標準入力とは別の仕組みだ。Web 側は後の web トピックで改めて扱うので、ここでは 「CLI ではどう受け取るか」 に集中してよい。
学習目標
fgets(STDIN)で 1 行入力を受け取れるtrim()で末尾の改行を取り除ける(int)で文字列を整数に変換して計算できる
ドリル
| no | 内容 |
|---|---|
| 01 | 入力された文字列をそのまま出力 |
| 02 | 2 行の整数を読んで合計を出力 |
📝 演習: ドリル 02 — 入力された 2 つの整数を足す
問題
標準入力で 2 行 受け取り、それぞれを整数として読み、合計を出力してください。
入力例:
3
5
期待される出力:
8ヒント
fgets(STDIN)を 2 回 呼んで 2 行読む- 各行を
trim()して(int)で整数に変換する $a + $bの結果を"\n"を付けて出力する