logo

Argumenty príkazového riadku v C

Najdôležitejšou funkciou C je funkcia main(). Väčšinou je definovaný s návratovým typom int a bez parametrov.

int main() { ... }>

Argumenty príkazového riadka môžeme zadať aj v jazyku C. Argumenty príkazového riadka sú hodnoty uvedené za názvom programu v príkazovom riadku operačného systému. Argumenty príkazového riadku sú spracované funkciou main() programu C.



Na odovzdanie argumentov príkazového riadka zvyčajne definujeme main() dvoma argumentmi: prvý argument je počet argumentov príkazového riadku a druhý je a zoznam argumentov príkazového riadku.

trie dátovú štruktúru

Syntax

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

Tu,

    argc (ARGument Count) je celočíselná premenná, ktorá uchováva počet argumentov príkazového riadka odovzdaných používateľom vrátane názvu programu. Ak teda odovzdáme hodnotu programu, hodnota argc by bola 2 (jedna pre argument a jedna pre názov programu)
  • Hodnota argc by nemala byť záporná.
  • argv (ARGument Vector) je pole ukazovateľov znakov so zoznamom všetkých argumentov.
  • Ak je argc väčšie ako nula, prvky poľa od argv[0] do argv[argc-1] budú obsahovať ukazovatele na reťazce.
  • argv[0] je názov programu , Potom až do argv[argc-1] sú každý prvok argumentmi príkazového riadku.

Pre lepšie pochopenie spustite tento kód na vašom počítači so systémom Linux.



Príklad

Nasledujúci príklad ilustruje tlač argumentov príkazového riadka.

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ýkon

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

pre terminálový vstup

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

Poznámka: Štandardy C povoľujú aj iné formáty závislé od platformy; napríklad Unix (hoci nie POSIX.1) a Microsoft Visual C++ majú tretí argument poskytujúci prostredie programu, inak prístupné cez getenv v stdlib.h. Podrobnosti nájdete v programe C na tlač premenných prostredia.

Vlastnosti argumentov príkazového riadku v C

  1. Prenášajú sa do funkcie main().
  2. Sú to parametre/argumenty dodávané programu pri jeho vyvolaní.
  3. Používajú sa na ovládanie programov zvonku namiesto pevného kódovania týchto hodnôt vo vnútri kódu.
  4. argv[argc] je ukazovateľ NULL.
  5. argv[0] obsahuje názov programu.
  6. argv[1] ukazuje na prvý argument príkazového riadka a argv[argc-1] ukazuje na posledný argument.

Poznámka: Všetky argumenty príkazového riadku odovzdávate oddelené medzerou, ale ak samotný argument má medzeru, môžete takéto argumenty odovzdať tak, že ich vložíte do dvojitých alebo jednoduchých úvodzoviek .

Príklad

Nižšie uvedený program demonštruje fungovanie argumentov príkazového riadku.

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

>

>

Výstup v rôznych scenároch:

1. Bez argumentov: Keď je vyššie uvedený kód skompilovaný a vykonaný bez odovzdania akéhokoľvek argumentu, vytvorí sa nasledujúci výstup.

Terminálový vstup

$ ./a.out>

Výkon

java číslo na reťazec
Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name>

2. Tri argumenty: Keď je vyššie uvedený kód skompilovaný a vykonaný s tromi argumentmi, vytvorí sa nasledujúci výstup.

Terminálový vstup

$ ./a.out First Second Third>

Výkon

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: Keď je vyššie uvedený kód skompilovaný a vykonaný s jedným argumentom oddeleným medzerou, ale v dvojitých úvodzovkách, vytvorí sa nasledujúci výstup.

Terminálový vstup

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

Výkon

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. Jeden argument v úvodzovkách oddelený medzerou: Keď je vyššie uvedený kód skompilovaný a vykonaný s jedným argumentom oddeleným medzerou, ale v jednoduchých úvodzovkách, vytvorí sa nasledujúci výstup.

Terminálový vstup

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

Výkon

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>