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.
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
- Ne välitetään main()-funktiolle.
- Ne ovat parametreja/argumentteja, jotka syötetään ohjelmalle, kun se vedetään.
- Niitä käytetään ohjaamaan ohjelmia ulkopuolelta sen sijaan, että koodattaisiin nämä arvot koodin sisällä.
- argv[argc] on NULL-osoitin.
- argv[0] sisältää ohjelman nimen.
- 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; }> |
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