logo

C のコマンドライン引数

C の最も重要な関数は main() 関数です。ほとんどの場合、戻り値の型が int でパラメータなしで定義されます。

int main() { ... }>

C ではコマンド ライン引数を指定することもできます。コマンド ライン引数は、オペレーティング システムのコマンド ライン シェルでプログラム名の後に指定される値です。コマンドライン引数は、C プログラムの main() 関数によって処理されます。



コマンドライン引数を渡すには、通常、2 つの引数を指定して main() を定義します。最初の引数は コマンドライン引数の数 そして2番目は コマンドライン引数のリスト。

Javaは文字列内の文字を置換します

構文

int main(int argc, char *argv[]) { /* ... */ } or int main(int argc, char **argv) { /* ... */ }>

ここ、

    argc (ARGument Count) は、プログラムの名前を含む、ユーザーによって渡されたコマンド ライン引数の数を格納する整数変数です。したがって、プログラムに値を渡す場合、argc の値は 2 (引数に 1 つとプログラム名に 1 つ) になります。
  • argc の値は負ではない必要があります。
  • argv (ARGument Vector) は、すべての引数をリストする文字ポインターの配列です。
  • argc が 0 より大きい場合、argv[0] から argv[argc-1] までの配列要素には文字列へのポインタが含まれます。
  • argv[0] はプログラムの名前です。その後、argv[argc-1] までのすべての要素はコマンドライン引数になります。

理解を深めるために、Linux マシンでこのコードを実行してください。



以下の例は、コマンド ライン引数の出力を示しています。

C






// C program named mainreturn.c to demonstrate the working> // of command line arguement> #include> // defining main with arguments> int> main(>int> argc,>char>* argv[])> {> >printf>(>'You have entered %d arguments: '>, argc);> >for> (>int> i = 0; i printf('%s ', argv[i]); } return 0; }>

>

>

出力

You have entered 4 arguments: ./main geeks for geeks>

端子入力用

$ g++ mainreturn.cpp -o main $ ./main geeks for geeks>

注記: 他のプラットフォーム依存の形式も C 標準で許可されています。たとえば、Unix (ただし、POSIX.1 ではありません) と Microsoft Visual C++ には、プログラムの環境を指定する 3 番目の引数があり、それ以外の場合は、stdlib.h の getenv を通じてアクセスできます。詳細については、「環境変数を出力する C プログラム」を参照してください。

C のコマンドライン引数のプロパティ

  1. これらは main() 関数に渡されます。
  2. これらは、プログラムが呼び出されるときにプログラムに提供されるパラメータ/引数です。
  3. これらは、コード内に値をハードコーディングする代わりに、外部からプログラムを制御するために使用されます。
  4. argv[argc] は NULL ポインタです。
  5. argv[0] はプログラムの名前を保持します。
  6. argv[1] は最初のコマンドライン引数を指し、argv[argc-1] は最後の引数を指します。

注記: すべてのコマンド ライン引数をスペースで区切って渡しますが、引数自体にスペースがある場合は、引数を二重引用符または一重引用符で囲んで渡すことができます。

以下のプログラムは、コマンド ライン引数の動作を示しています。

C




// C program to illustrate> // command line arguments> #include> int> main(>int> argc,>char>* argv[])> {> >printf>(>'Program name is: %s'>, argv[0]);> >if> (argc == 1)> >printf>(>' No Extra Command Line Argument Passed '> >'Other Than Program Name'>);> >if> (argc>= 2) {>> >printf>(>' Number Of Arguments Passed: %d'>, argc);> >printf>(>' ----Following Are The Command Line '> >'Arguments Passed----'>);> >for> (>int> i = 0; i printf(' argv[%d]: %s', i, argv[i]); } return 0; }>

>

>

さまざまなシナリオでの出力:

1. 引数なし: 上記のコードをコンパイルし、引数を渡さずに実行すると、次の出力が生成されます。

端子入力

$ ./a.out>

出力

Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name>

2. 3 つの引数: 上記のコードをコンパイルし、3 つの引数を指定して実行すると、次の出力が生成されます。

端子入力

$ ./a.out First Second Third>

出力

Program Name Is: ./a.out Number Of Arguments Passed: 4 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First argv[2]: Second argv[3]: Third>

3. 単一の引数: 上記のコードをコンパイルし、単一の引数をスペースで区切って二重引用符で囲んで実行すると、次の出力が生成されます。

端子入力

$ ./a.out 'First Second Third'>

出力

PythonはJSONをファイルに保存します
Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>

4. 単一の引数を引用符で囲み、スペースで区切ります。 上記のコードをコンパイルし、スペースで区切られ単一引用符で囲まれた単一の引数を指定して実行すると、次の出力が生成されます。

端子入力

$ ./a.out 'First Second Third'>

出力

Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third>