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
        • 意味:すべての有効なオプション文字で構成される文字列
        • 単一の文字はオプションを表す
        • 単一の文字の後にコロンが続く場合
          • 1 つのコロン:そのオプションの後にパラメータ値が必要
            • パラメータはオプションの直後に続くか、スペースで区切られる
            • [コマンドのオプションパラメータの存在に似ています]
          • 2 つのコロン:オプションの後のパラメータはオプションです
            • パラメータがある場合、オプションの直後に続く必要があり、スペースは使用できません
          • パラメータのポインタは optarg に割り当てられます [2 つのコロンの場合、デフォルトは 0←null]
          • 画像
          • x、y、z は 3 つのオプションを表します
      • getopt () を繰り返し呼び出すことで、複数のオプションを読み込むことができます。例:-al -h
      • いくつかのグローバル変数
        • 画像
        • optarg: コロンがある場合、オプションのパラメータを抽出できます
        • optind
          • 意味: argv 配列の次の要素 [文字] のインデックス
          • 呼び出し元が 1 にリセットすると、argv を再スキャンできます
          • [PS] 外部変数;ポインタのようなもの
        • 宣言する必要はなく、直接使用できます [すべての変数は定義済みのヘッダーファイルで定義されているため]
          • 外部変数の概念

コードデモ#

getopt#

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

追加知識#

考えるポイント#

Tips#

  • 小課題:C 言語を使用して ls -al コマンドを実装する
    • フローチャートを使用してアイデアを整理する方法を学ぶ。ProcessOnをおすすめします - オンラインフローチャート作成ウェブサイト
      • 画像
      • 宿船からの簡単なフローチャート
  • コマンドを初めて学ぶときは、バリエーションにあまり注意を払う必要はありません
  • vim では、を入力すると、ソースコードの構造化ビューを表示できます
  • ctags の一般的な操作:ctrl + ] 定義にジャンプ、ctrl + o 戻る

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