何も渡されなければ、argc は 1 になります (argc は渡された引数の数を示します)。これは、何かを含む唯一の argv 要素が argv[0] (プログラムの名前を含む) になることを意味します。つまり、argv[1] の呼び出しは範囲外のインデックスになり、クラッシュを引き起こす可能性があります。運が良ければ、ジャンク データになることもあります。
if(argc == 1)
strcpy(Buff1, "default");
else if(argc == 2)
strcpy(Buff1, argv[1]);
else
//do something here if there is more than 1 argument passed to it
また、例の引数を渡す方法が意図したとおりに機能しないことに注意することも価値があります。 [1] は「Buff1」、argv[2] は「=」、argv[3] は「test」です。
「./program test helllooo」を呼び出すだけで、私が提供したプログラム スニピットで動作し、Buff1 に「helllooo」が入力されます。また、「./program test」の呼び出しも機能し、Buff1 に「default」を入力します。より高度なことを行うには、コマンド ライン スイッチ (./program test -b somethinghere -x somethinghere など) に入る必要があります。これは、argc と argv を解析するより高度な方法です。