logo

Komentorivi-argumentit C:ssä

C:n tärkein funktio on main()-funktio. Se määritellään useimmiten palautustyypillä int ja ilman parametreja.

int main() { ... }>

Voimme antaa myös komentoriviargumentteja C:ssä. Komentoriviargumentit ovat arvoja, jotka annetaan ohjelman nimen jälkeen Käyttöjärjestelmien komentorivikuoressa. C-ohjelman main()-funktio käsittelee komentoriviargumentteja.



Komentoriviargumenttien välittämiseksi määrittelemme yleensä main():n kahdella argumentilla: ensimmäinen argumentti on komentoriviargumenttien määrä ja toinen on a luettelo komentoriviargumenteista.

taulukon pituus java

Syntaksi

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

Tässä,

    argc (ARGument Count) on kokonaislukumuuttuja, joka tallentaa käyttäjän lähettämien komentoriviargumenttien määrän, mukaan lukien ohjelman nimen. Joten jos välitämme arvon ohjelmalle, argc:n arvo olisi 2 (yksi argumentille ja yksi ohjelman nimelle)
  • Argc:n arvon tulee olla ei-negatiivinen.
  • argv (ARGument Vector) on joukko merkkiosoittimia, joissa luetellaan kaikki argumentit.
  • Jos argc on suurempi kuin nolla, taulukon elementit argv[0] - argv[argc-1] sisältävät osoittimia merkkijonoihin.
  • argv[0] on ohjelman nimi, jonka jälkeen kunnes argv[argc-1] jokainen elementti on komentoriviargumentteja.

Jotta ymmärrät paremmin, suorita tämä koodi Linux-koneellasi.



Esimerkki

Alla oleva esimerkki havainnollistaa komentoriviargumenttien tulostamista.

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

>

>

Lähtö

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

terminaalin tuloa varten

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

Huomautus: C-standardit sallivat myös muut alustasta riippuvat muodot; Esimerkiksi Unixissa (tosin ei POSIX.1:ssä) ja Microsoft Visual C++:ssa on kolmas argumentti, joka antaa ohjelman ympäristön, joka on muuten käytettävissä stdlib.h:n getenv:n kautta. Katso lisätietoja C-ohjelmasta ympäristömuuttujien tulostamiseksi.

C:n komentoriviargumenttien ominaisuudet

  1. Ne välitetään main()-funktiolle.
  2. Ne ovat parametreja/argumentteja, jotka syötetään ohjelmalle, kun se vedetään.
  3. Niitä käytetään ohjaamaan ohjelmia ulkopuolelta sen sijaan, että koodattaisiin nämä arvot koodin sisällä.
  4. argv[argc] on NULL-osoitin.
  5. argv[0] sisältää ohjelman nimen.
  6. argv[1] osoittaa ensimmäistä komentorivin argumenttia ja argv[argc-1] osoittaa viimeistä argumenttia.

Huomautus: Välität kaikki komentorivin argumentit välilyönnillä erotettuina, mutta jos argumentissa itsessään on välilyönti, voit välittää tällaiset argumentit laittamalla ne lainausmerkkien tai lainausmerkkien sisään.

Esimerkki

Alla oleva ohjelma näyttää komentoriviargumenttien toiminnan.

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

>

alkuluku java

>

Tulos eri skenaarioissa:

1. Ilman argumenttia: Kun yllä oleva koodi käännetään ja suoritetaan ilman argumentteja, se tuottaa seuraavan tulosteen.

Päätteen tulo

$ ./a.out>

Lähtö

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

2. Kolme argumenttia: Kun yllä oleva koodi käännetään ja suoritetaan kolmella argumentilla, se tuottaa seuraavan tulosteen.

Päätteen tulo

$ ./a.out First Second Third>

Lähtö

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. Yksi argumentti: Kun yllä oleva koodi käännetään ja suoritetaan yhdellä argumentilla välilyönnillä erotettuna mutta lainausmerkkien sisällä, se tuottaa seuraavan tulosteen.

Päätteen tulo

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

Lähtö

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. Yksi argumentti lainausmerkeissä välilyönnillä erotettuna: Kun yllä oleva koodi käännetään ja suoritetaan yhdellä argumentilla, joka on erotettu välilyönnillä, mutta yksittäisten lainausmerkkien sisällä, se tuottaa seuraavan tulosteen.

Päätteen tulo

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

Lähtö

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>