Updated on 2014-01-22 (水) 19:37:38 (3747d)

学生にプログラムを作らせると

  • ひたすらscanfで何でも入力させるような、非効率的なプログラムばかりできあがる
  • パラメータがプログラム内部に直接記述してあるため、パラメータをいじるためだけにコンパイルし直している

という不毛な状態が目につくため、 コマンドラインで多少はまともにオプションを使えるようちょっとテンプレートを作ってみました。 短いのでソースを見ればすぐ使い方はわかるはずですが、 そのままでコンパイルできるようになっているので、 実際に動かしてみれば動作が理解できると思います。

簡易版

こちらはmain関数の中でコマンドラインを解析する簡単な例です。 オプションのまとめ書きや2文字以上の長いオプションには対応しません。

通常版

もう少しまじめに対応したのがこちらです。-で始まる1文字のオプション、 --で始まる長いオプションも利用できます。mainと別関数でオプションの処理をします。 オプションのまとめ書き(-a -b を -ab とすること)にも対応していますが、 その場合は引数をとるオプションは最後になります。

さらに、ファイル名とオプションが混在していても大丈夫なように作り替えてもいいのですが、 あまり有り難みがないのでやめておきます。

参考

  1. プログラミング言語C(K&R)第5章、共立出版 #amazon(4320026926,right,image)