Bo2SS

Bo2SS

0 コース紹介とコマンドライン解析関数

  • 画像

[コマンドオプションを実現するには?メイン関数の入力パラメータ argc、argv を考えることができます]

コース内容#

getopt 関数#

【コマンドライン解析関数】

  • <unistd.h> → Unix Standard
  • ⭐関数プロトタイプ
    • int getopt(int argc, char * const argv[], const char *optstring);
    • 推測
      • 戻り値 int
        • ① 0:成功;-1:失敗
        • ② ≥0:成功;<0:失敗
      • 形参 argc、argv:メイン関数の形参のように
      • 形参 optstring:オプション文字列
    • man マニュアルを確認:man 3 getopt
      • 戻り値は文字 [オプション] または - 1
        • 戻るときに外部変数 optind と静的変数 nextchar が更新される
        • オプションがなくなると、-1 を返し、optind は argv の最初の要素の位置に移動する [オプションではない]
      • argc、argv
        • メイン関数のパラメータから直接渡される
      • optstring
        • 意味:すべての合法なオプション文字からなる文字列
        • 単一の文字はオプションを表す
        • 単一の文字の後にコロンが続く場合
          • 一つのコロンは、そのオプションの後に必ずパラメータ値が続くことを示す
            • パラメータはオプションの後に続くか、スペースで区切られる
            • [コマンド内のオプションパラメータの存在に似ている]
          • 二つのコロンは、オプションの後のパラメータがオプションであることを意味する
            • パラメータがある場合、必ずオプションの後に続かなければならず、スペースを使ってはいけない
          • パラメータのポインタは optarg に割り当てられる [二つのコロンの場合、デフォルトは 0←null]
          • 画像
          • x、y、z は 3 つのオプションを表す
      • getopt () を繰り返し呼び出すことで、複数のオプションを読み取ることができる、例:-al -h
      • 一部のグローバル変数
        • 画像
        • optarg:コロンがある場合、オプションパラメータを抽出できる
        • optind
          • 意味:argv 配列の次の要素 [文字] のインデックス
          • 呼び出し元がこれを 1 にリセットすると、argv を再スキャンできる
          • [PS] 外部変数;ポインタのようなもの
        • 直接使用できる [宣言は不要]、なぜなら【参照されたヘッダーファイル】でこれらの変数が定義されているから
          • 外部変数の概念

コードデモ#

getopt#

  • 画像
  • flag、switch の使い方を学ぶ
  • 【コロンの意味】必須 / オプションの選択パラメータ
  • getopt に関連するグローバル変数に注意し、直接使用できる
  • exit () は非 0 の値を使用して異常終了を示すことができる
  • プログラム結果
    • 画像
    • 参考用

追加知識点#

考察点#

ヒント#

  • 小課題:C 言語で ls -al コマンドを実装する
    • フローチャートを使って思考を整理することを学ぶ、推奨ProcessOn—— オンラインフローチャート作成ウェブサイト
      • 画像
      • 宿船からの簡易フローチャート
  • コマンドを初めて学ぶときは、変種にあまり注意を払わない
  • vim で、入力でソースコードの構造化ビューを確認できる
  • ctags の一般的な操作:ctrl + ] 定義にジャンプ、ctrl + o 戻る

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。