logo

Argumentele liniei de comandă în C

Cea mai importantă funcție a lui C este funcția main(). Este definit în mare parte cu un tip de returnare int și fără parametri.

int main() { ... }>

Putem da, de asemenea, argumente de linie de comandă în C. Argumentele de linie de comandă sunt valorile date după numele programului în shell-ul de linie de comandă al sistemelor de operare. Argumentele din linia de comandă sunt gestionate de funcția main() a unui program C.



Pentru a transmite argumente din linia de comandă, definim de obicei main() cu două argumente: primul argument este the numărul de argumente ale liniei de comandă iar al doilea este a lista de argumente din linia de comandă.

număr palindrom

Sintaxă

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

Aici,

    argc (ARGument Count) este o variabilă întreagă care stochează numărul de argumente ale liniei de comandă transmise de utilizator, inclusiv numele programului. Deci, dacă transmitem o valoare unui program, valoarea lui argc ar fi 2 (una pentru argument și una pentru numele programului)
  • Valoarea lui argc ar trebui să fie nenegativă.
  • argv (ARGument Vector) este o serie de indicatori de caractere care listează toate argumentele.
  • Dacă argc este mai mare decât zero, elementele matricei de la argv[0] la argv[argc-1] vor conține pointeri către șiruri.
  • argv[0] este numele programului, după aceea până la argv[argc-1] fiecare element este argumente din linia de comandă.

Pentru o mai bună înțelegere, rulați acest cod pe mașina dvs. Linux.



Exemplu

Exemplul de mai jos ilustrează tipărirea argumentelor liniei de comandă.

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

>

>

Ieșire

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

pentru intrare terminal

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

Notă: Alte formate dependente de platformă sunt, de asemenea, permise de standardele C; de exemplu, Unix (deși nu POSIX.1) și Microsoft Visual C++ au un al treilea argument care oferă mediul programului, altfel accesibil prin getenv în stdlib.h. Consultați programul C pentru a imprima variabilele de mediu pentru detalii.

Proprietățile argumentelor liniei de comandă în C

  1. Acestea sunt transmise funcției main().
  2. Sunt parametri/argumente furnizate programului atunci când este invocat.
  3. Ele sunt folosite pentru a controla programele din exterior în loc de a codifica acele valori în interiorul codului.
  4. argv[argc] este un pointer NULL.
  5. argv[0] deține numele programului.
  6. argv[1] indică primul argument din linia de comandă și argv[argc-1] indică ultimul argument.

Notă: Treceți toate argumentele liniei de comandă separate printr-un spațiu, dar dacă argumentul în sine are un spațiu, atunci puteți trece astfel de argumente punându-le între ghilimele duble sau simple .

Exemplu

Programul de mai jos demonstrează funcționarea argumentelor liniei de comandă.

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

>

>

Ieșire în diferite scenarii:

1. Fără argument: Când codul de mai sus este compilat și executat fără a trece niciun argument, acesta produce următoarea ieșire.

Intrare terminală

$ ./a.out>

Ieșire

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

2. Trei argumente: Când codul de mai sus este compilat și executat cu trei argumente, acesta produce următoarea ieșire.

Intrare terminală

$ ./a.out First Second Third>

Ieșire

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. Un singur argument: Când codul de mai sus este compilat și executat cu un singur argument separat de spațiu, dar între ghilimele duble, acesta produce următoarea ieșire.

Intrare terminală

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

Ieșire

comanda în nodul js
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. Un singur argument între ghilimele separate prin spațiu: Când codul de mai sus este compilat și executat cu un singur argument separat de spațiu, dar între ghilimele simple, acesta produce următoarea ieșire.

Intrare terminală

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

Ieșire

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>