c言語におけるコマンドラインパラメータargc,argv

2288 ワード

argv:ポインタのポインタargc:整数char**argv or char*argv[]or char argv[][]この2つのパラメータの意味をイメージ的に説明するために、まず1つの例で説明します:プログラムの名前がtestであると仮定して、testだけを入力すると、オペレーティングシステムから伝わるパラメータは:argc=1で、プログラム名が1つしかないことを示します;argcには1つの要素しかありません.argv[0]は入力したプログラムのパスと名前を指します:./test入力test para_1,パラメータがある場合,オペレーティングシステムから伝達されるパラメータはargc=2であり,プログラム名のほかにパラメータがあることを示す.argv[0]は、入力されたプログラムパスおよび名前を指す.argv[1]指向パラメータpara_1文字列
test para_を入力すると1 para_2パラメータが2つある場合、オペレーティングシステムから伝達されるパラメータはargc=3であり、プログラム名のほかに2つのパラメータがあることを示す.argv[0]は、入力されたプログラムパスおよび名前を指す.argv[1]指向パラメータpara_1文字列;argv[2]指向パラメータpara_2文字列;
 
このように......void main(int argc,char*argv[])char*argv[]:argvはポインタ配列であり、要素個数はargcであり、格納されているのは各パラメータを指すポインタであり、最初の要素であるargv[0]はプログラム実行の全パス名であり、2つの要素(argv[1])から始まり、各パラメータの名前であり、最後の要素はNULLである.総じて、*argv:文字列配列argv[0]はプログラム実行の全パス名argv[1]はプログラム名を実行した最初の文字列である.Argv[2]は、プログラム名を実行した2番目の文字列です.argv[argc]はNULLです.int argc:argvの大きさを表す、実際のパラメータの個数+1であり、そのうち+1はargv[0]がコンパイル後の実行可能ファイル名main()パラメータ:Turbo C 2であるためである.0起動時にargc、argv、env(環境変数を格納)の3つのパラメータをmain()関数に渡すと、ユーザプログラムで説明(または説明しない)ことができ、一部(または全部)のパラメータを説明すればmain()サブプログラムのローカル変数になります.これらのパラメータを説明するには、argc,argv,envの順に、main()main(int argc)main(int argc,char*argv[])main(int argc,char*argv[],char*env[])のような例を挙げる必要があります.このうち、2つ目の場合は合法ですが、argv[]を使用しないargcのみがプログラムで使用されることはめったにありません.以下に、サンプルプログラムEXAMPLEを提供する.EXEでは、main()関数で3つのパラメータを使用する方法を示します.
#i nclude <stdio.h>
#i nclude <stdlib.h>
main(int argc, char *argv[], char *env[])
{
  int i;
  printf( "These are the %d command- line arguments passed to main:

", argc); for( i = 0; i <= argc; i++) printf( "argv[%d]:%s
", i, argv[i] ); printf( "
The environment string(s)on this system are:

"); for( i = 0; env[i] != NULL; i++ ) printf( " env[%d]:%s
", i, env[i] ); }
 
./EXAMPLE first "I’m a good boy"c "last "stop
注意:この例の「argument with blanks」および「Last but one」のように、スペースを含むパラメータを二重引用符で囲むことができます.
結果は次のとおりです.
These are the 6 command-linearguments passed to main:
argv[0]:./EXAMPLE
argv[1]:first
argv[2]: I’m a good boy
argv[3]:c
argv[4]: last
argv[5]:stop
argv[6]:(NULL)