logo

Argumenty příkazového řádku v C

Nejdůležitější funkcí C je funkce main(). Většinou je definován s návratovým typem int a bez parametrů.

int main() { ... }>

Můžeme také zadat argumenty příkazového řádku v C. Argumenty příkazového řádku jsou hodnoty uvedené za názvem programu v příkazovém řádku operačních systémů. Argumenty příkazového řádku jsou zpracovávány funkcí main() programu v jazyce C.



Abychom předali argumenty příkazového řádku, obvykle definujeme main() dvěma argumenty: prvním argumentem je argument počet argumentů příkazového řádku a druhý je a seznam argumentů příkazového řádku.

np.histogram

Syntax

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

Tady,

    argc (ARGument Count) je celočíselná proměnná, která ukládá počet argumentů příkazového řádku předaných uživatelem, včetně názvu programu. Pokud tedy předáme hodnotu programu, hodnota argc by byla 2 (jedna pro argument a jedna pro název programu)
  • Hodnota argc by měla být nezáporná.
  • argv (ARGument Vector) je pole znakových ukazatelů se seznamem všech argumentů.
  • Pokud je argc větší než nula, prvky pole od argv[0] do argv[argc-1] budou obsahovat ukazatele na řetězce.
  • argv[0] je název programu, poté až do argv[argc-1] jsou všechny prvky argumenty příkazového řádku.

Pro lepší pochopení spusťte tento kód na svém počítači se systémem Linux.



Příklad

Níže uvedený příklad ilustruje tisk argumentů příkazového řádku.

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; }>

>

>

Výstup

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

pro terminálový vstup

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

Poznámka: Jiné formáty závislé na platformě jsou také povoleny standardy C; například Unix (i když ne POSIX.1) a Microsoft Visual C++ mají třetí argument udávající prostředí programu, jinak přístupné přes getenv v stdlib.h. Podrobnosti naleznete v programu C pro tisk proměnných prostředí.

Vlastnosti argumentů příkazového řádku v C

  1. Jsou předány funkci main().
  2. Jsou to parametry/argumenty dodávané programu, když je vyvolán.
  3. Používají se k ovládání programů zvenčí namísto pevného kódování těchto hodnot uvnitř kódu.
  4. argv[argc] je ukazatel NULL.
  5. argv[0] obsahuje název programu.
  6. argv[1] ukazuje na první argument příkazového řádku a argv[argc-1] ukazuje na poslední argument.

Poznámka: Všechny argumenty příkazového řádku předáváte oddělené mezerou, ale pokud má samotný argument mezeru, můžete takové argumenty předat tak, že je vložíte do dvojitých nebo jednoduchých uvozovek .

Příklad

Níže uvedený program demonstruje fungování argumentů příkazového řádku.

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; }>

8 na 1 multiplexer

>

>

Výstup v různých scénářích:

1. Bez argumentů: Když je výše uvedený kód zkompilován a spuštěn bez předání jakéhokoli argumentu, vytvoří následující výstup.

Terminálový vstup

$ ./a.out>

Výstup

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

2. Tři argumenty: Když je výše uvedený kód zkompilován a spuštěn se třemi argumenty, vytvoří následující výstup.

Terminálový vstup

$ ./a.out First Second Third>

Výstup

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. Jediný argument: Když je výše uvedený kód zkompilován a spuštěn s jedním argumentem odděleným mezerou, ale uvnitř dvojitých uvozovek, vytvoří následující výstup.

Terminálový vstup

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

Výstup

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. Jediný argument v uvozovkách oddělený mezerou: Když je výše uvedený kód zkompilován a spuštěn s jedním argumentem odděleným mezerou, ale uvnitř jednoduchých uvozovek, vytvoří následující výstup.

Terminálový vstup

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

Výstup

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>