De belangrijkste functie van C is de functie main(). Het wordt meestal gedefinieerd met het retourtype int en zonder parameters.
int main() { ... }>
We kunnen ook opdrachtregelargumenten geven in C. Opdrachtregelargumenten zijn de waarden die worden gegeven na de naam van het programma in de opdrachtregelshell van besturingssystemen. Opdrachtregelargumenten worden afgehandeld door de functie main() van een C-programma.
Om opdrachtregelargumenten door te geven, definiëren we main() doorgaans met twee argumenten: het eerste argument is de aantal opdrachtregelargumenten en de tweede is een lijst met opdrachtregelargumenten.
np.clip
Syntaxis
int main(int argc, char *argv[]) { /* ... */ } or int main(int argc, char **argv) { /* ... */ }>
Hier,
- argc (ARGument Count) is een geheel getalvariabele die het aantal opdrachtregelargumenten opslaat dat door de gebruiker is doorgegeven, inclusief de naam van het programma. Dus als we een waarde doorgeven aan een programma, zou de waarde van argc 2 zijn (één voor argument en één voor programmanaam)
- De waarde van argc mag niet negatief zijn. argv (ARGument Vector) is een reeks tekenaanwijzers die alle argumenten opsomt.
- Als argc groter is dan nul, zullen de array-elementen van argv[0] tot argv[argc-1] verwijzingen naar strings bevatten.
- argv[0] is de naam van het programma. Daarna tot argv[argc-1] bestaat elk element uit opdrachtregelargumenten.
Voor een beter begrip voert u deze code uit op uw Linux-machine.
Voorbeeld
Het onderstaande voorbeeld illustreert het afdrukken van opdrachtregelargumenten.
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; }> |
>
>
Uitvoer
You have entered 4 arguments: ./main geeks for geeks>
voor terminalinvoer
$ g++ mainreturn.cpp -o main $ ./main geeks for geeks>
Opmerking: Andere platformafhankelijke formaten zijn ook toegestaan door de C-standaarden; Unix (hoewel niet POSIX.1) en Microsoft Visual C++ hebben bijvoorbeeld een derde argument dat de omgeving van het programma aangeeft, anders toegankelijk via getenv in stdlib.h. Raadpleeg het C-programma voor afdrukomgevingsvariabelen voor meer informatie.
Eigenschappen van opdrachtregelargumenten in C
- Ze worden doorgegeven aan de functie main().
- Het zijn parameters/argumenten die aan het programma worden geleverd wanneer het wordt aangeroepen.
- Ze worden gebruikt om programma's van buitenaf te besturen in plaats van de waarden binnen de code hard te coderen.
- argv[argc] is een NULL-aanwijzer.
- argv[0] bevat de naam van het programma.
- argv[1] verwijst naar het eerste opdrachtregelargument en argv[argc-1] verwijst naar het laatste argument.
Opmerking: U geeft alle argumenten op de opdrachtregel door, gescheiden door een spatie, maar als het argument zelf een spatie bevat, kunt u dergelijke argumenten doorgeven door ze tussen dubbele aanhalingstekens of enkele aanhalingstekens te plaatsen.
Voorbeeld
Het onderstaande programma demonstreert de werking van opdrachtregelargumenten.
C
invoegpython
// 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; }> |
>
>
Uitvoer in verschillende scenario's:
1. Zonder argument: Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd zonder enig argument door te geven, produceert deze de volgende uitvoer.
Terminalingang
$ ./a.out>
Uitvoer
Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name>
2. Drie argumenten: Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd met drie argumenten, produceert deze de volgende uitvoer.
Terminalingang
$ ./a.out First Second Third>
Uitvoer
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. Eén argument: Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd met een enkel argument gescheiden door een spatie maar tussen dubbele aanhalingstekens, produceert dit de volgende uitvoer.
Terminalingang
$ ./a.out 'First Second Third'>
Uitvoer
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. Eén argument tussen aanhalingstekens, gescheiden door een spatie: Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd met een enkel argument, gescheiden door een spatie maar tussen enkele aanhalingstekens, produceert dit de volgende uitvoer.
Terminalingang
$ ./a.out 'First Second Third'>
Uitvoer
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>