logo

Komandrindas argumenti C

C vissvarīgākā funkcija ir galvenā () funkcija. Tas galvenokārt tiek definēts ar atgriešanās veidu int un bez parametriem.

int main() { ... }>

Mēs varam norādīt arī komandrindas argumentus C valodā. Komandrindas argumenti ir vērtības, kas norādītas aiz programmas nosaukuma operētājsistēmu komandrindas apvalkā. Komandrindas argumentus apstrādā C programmas funkcija main().



Lai nodotu komandrindas argumentus, mēs parasti definējam main() ar diviem argumentiem: pirmais arguments ir komandrindas argumentu skaits un otrais ir a komandrindas argumentu saraksts.

skaits atšķiras

Sintakse

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

Šeit,

    argc (ARGument Count) ir vesels skaitlis, kas saglabā lietotāja nodoto komandrindas argumentu skaitu, tostarp programmas nosaukumu. Tātad, ja mēs nododam vērtību programmai, argc vērtība būtu 2 (viena argumentam un viena programmas nosaukumam)
  • Argc vērtībai jābūt nenegatīvai.
  • argv (ARGument Vector) ir rakstzīmju norāžu masīvs, kurā uzskaitīti visi argumenti.
  • Ja argc ir lielāks par nulli, masīva elementos no argv[0] līdz argv[argc-1] būs norādes uz virknēm.
  • argv[0] ir programmas nosaukums, pēc tam līdz argv[argc-1] katrs elements ir komandrindas argumenti.

Lai labāk izprastu, palaidiet šo kodu savā Linux datorā.



Piemērs

Tālāk redzamais piemērs ilustrē komandrindas argumentu drukāšanu.

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

>

>

Izvade

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

termināļa ievadei

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

Piezīme: C standarti pieļauj arī citus no platformas atkarīgus formātus; piemēram, Unix (lai gan ne POSIX.1) un Microsoft Visual C++ ir trešais arguments, kas sniedz programmas vidi, citādi var piekļūt, izmantojot getenv stdlib.h. Sīkāku informāciju skatiet programmā C, lai drukātu vides mainīgos.

Komandrindas argumentu īpašības valodā C

  1. Tie tiek nodoti funkcijai main().
  2. Tie ir parametri/argumenti, kas tiek piegādāti programmai, kad tā tiek izsaukta.
  3. Tos izmanto, lai kontrolētu programmas no ārpuses, nevis stingri kodētu šīs vērtības koda iekšpusē.
  4. argv[argc] ir NULL rādītājs.
  5. argv[0] satur programmas nosaukumu.
  6. argv[1] norāda uz pirmo komandrindas argumentu un argv[argc-1] norāda uz pēdējo argumentu.

Piezīme: Jūs nododat visus komandrindas argumentus, atdalot tos ar atstarpi, bet, ja pašam argumentam ir atstarpe, varat nodot tos, ievietojot tos dubultpēdiņās vai vienpēdiņās .

Piemērs

Tālāk esošā programma parāda komandrindas argumentu darbību.

C

prime bez koda java




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

>

>

Izvade dažādos scenārijos:

1. Bez argumentiem: Kad iepriekš minētais kods tiek apkopots un izpildīts, nenododot nevienu argumentu, tas rada šādu izvadi.

Termināļa ievade

$ ./a.out>

Izvade

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

2. Trīs argumenti: Kad iepriekš minētais kods tiek apkopots un izpildīts ar trim argumentiem, tas rada šādu izvadi.

Termināļa ievade

$ ./a.out First Second Third>

Izvade

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. Viens arguments: Kad iepriekš minētais kods tiek apkopots un izpildīts ar vienu argumentu, kas atdalīts ar atstarpi, bet dubultpēdiņās, tas rada šādu izvadi.

Termināļa ievade

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

Izvade

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. Atsevišķs arguments pēdiņās, atdalītas ar atstarpi: Kad iepriekš minētais kods tiek apkopots un izpildīts ar vienu argumentu, kas atdalīts ar atstarpi, bet atsevišķās pēdiņās, tas rada šādu izvadi.

Termināļa ievade

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

Izvade

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>