Hello, World! の1行から。コンパイルという儀式、printf/scanfの基本、そして最初の関門「入力の罠」を越える。
Cの入門書を開いて、最初のページで力尽きた経験はありませんか。多くの本は1章まるごとが「開発環境の準備」です。ダウンロード、インストール、パスの設定。まだ1行も書いていないのに、もう疲れています。 このポータルは順番を変えます。まず読む。次に紙の上で動かす。最後に道場で解く。 環境の準備は、Cが面白くなってからで十分間に合います。 このポータルの3つの使い方…
世界中のプログラマが、新しい言語を触るとき最初に画面へ出す言葉があります。「Hello, World!」です。1978年のK&R『プログラミング言語C』から続く伝統で、いまも入門の儀式になっています。 まずは全文です。 たった5行ですが、ここにCの骨格がひととおり入っています。1行ずつ解剖します。 1行目 #include <stdio.h> 「画面に出す道…
main は特別な名前です。プログラムがどれだけ大きくなっても、OSが最初に呼ぶのは必ず main。空港でいえば入国ゲートで、旅の出発点はここ1つだけと決まっています。 main関数の形 int main(void) を分解します。 ・int … main が返す値の型。整数を1つ返します。 ・main … 名前。この名前の関数だけが入口になれます。 ・(v…
コンパイルを実行したら赤い文字がずらっと出た——この瞬間に心が折れる人はとても多いです。ですがエラーメッセージは、あなたを責めているのではありません。どこで困ったかを教えてくれる、いちばん正確な相談相手です。読み方さえ分かれば怖くありません。 エラー1行の構造 gcc の場合、1行はこう並んでいます。 左から順に、ファイル名・行番号・桁番号・種類(error…
printf は print formatted——「書式を指定して出力する」という名前です。文字を出すだけでなく、数値を好きな形に整えて表示できます。ここを押さえると、プログラムの結果が一気に読みやすくなります。 書式指定子——値の差し込み口 出力は 4人で1250.5円です です。%d や %.1f が書式指定子で、後ろに並べた値がこの位置へ順番に差し込…
ここまでのプログラムは、いつ動かしても同じ結果でした。人からの入力を受け取れるようになると、プログラムは急に「道具」になります。標準入力から値を読む代表が scanf です。 いちばん短い例 int nen; で入れ物(変数)を用意し、scanf("%d", &nen); でそこに数値を読み込みます。書式指定子は printf と同じ考え方で、%d は整数、…
Cの入門でいちばん多く聞く悲鳴が、scanf まわりです。「実行した瞬間に落ちた」「何も入力していないのに勝手に進んだ」「同じ質問が無限に出続ける」。どれも原因ははっきりしていて、対処も決まっています。ここを越えれば、入力は怖くなくなります。 罠1——& を忘れる 症状は、実行した瞬間の異常終了(Windowsなら「動作を停止しました」、Linuxなら Se…
コードは書く時間より読む時間のほうが長くなります。読む相手はたいてい3か月後の自分です。そのときの自分に向けて、少しだけ親切にしておく方法がコメントと整形です。 2種類のコメント コメントはコンパイルの前に取り除かれるので、実行速度には一切影響しません。安心して書けます。 コメントに書くのは「なぜ」 コードを読めば「何をしているか」は分かります。分からないの…
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。