logo

Befehlszeilenargumente in C

Die wichtigste Funktion von C ist die Funktion main(). Es wird meist mit dem Rückgabetyp int und ohne Parameter definiert.

int main() { ... }>

Wir können in C auch Befehlszeilenargumente angeben. Befehlszeilenargumente sind die Werte, die nach dem Namen des Programms in der Befehlszeilen-Shell von Betriebssystemen angegeben werden. Befehlszeilenargumente werden von der Funktion main() eines C-Programms verarbeitet.



Um Befehlszeilenargumente zu übergeben, definieren wir main() normalerweise mit zwei Argumenten: Das erste Argument ist das Anzahl der Befehlszeilenargumente und der zweite ist a Liste der Befehlszeilenargumente.

Was ist Mac OS?

Syntax

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

Hier,

    argc (ARGument Count) ist eine Ganzzahlvariable, die die Anzahl der vom Benutzer übergebenen Befehlszeilenargumente einschließlich des Namens des Programms speichert. Wenn wir also einen Wert an ein Programm übergeben, wäre der Wert von argc 2 (einer für das Argument und einer für den Programmnamen).
  • Der Wert von argc sollte nicht negativ sein.
  • argv (ARGument Vector) ist ein Array von Zeichenzeigern, die alle Argumente auflisten.
  • Wenn argc größer als Null ist, enthalten die Array-Elemente von argv[0] bis argv[argc-1] Zeiger auf Zeichenfolgen.
  • argv[0] ist der Name des Programms. Danach sind bis argv[argc-1] alle Elemente Befehlszeilenargumente.

Zum besseren Verständnis führen Sie diesen Code auf Ihrem Linux-Rechner aus.



Beispiel

Das folgende Beispiel veranschaulicht das Drucken von Befehlszeilenargumenten.

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

>

>

Ausgabe

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

für Terminaleingang

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

Notiz: Auch andere plattformabhängige Formate sind durch die C-Standards zulässig; Unix (jedoch nicht POSIX.1) und Microsoft Visual C++ haben beispielsweise ein drittes Argument, das die Programmumgebung angibt, andernfalls kann über getenv in stdlib.h darauf zugegriffen werden. Einzelheiten finden Sie im C-Programm zum Drucken von Umgebungsvariablen.

Eigenschaften von Befehlszeilenargumenten in C

  1. Sie werden an die Funktion main() übergeben.
  2. Dabei handelt es sich um Parameter/Argumente, die dem Programm beim Aufruf bereitgestellt werden.
  3. Sie werden verwendet, um Programme von außen zu steuern, anstatt diese Werte im Code fest zu codieren.
  4. argv[argc] ist ein NULL-Zeiger.
  5. argv[0] enthält den Namen des Programms.
  6. argv[1] zeigt auf das erste Befehlszeilenargument und argv[argc-1] zeigt auf das letzte Argument.

Notiz: Sie übergeben alle Befehlszeilenargumente durch ein Leerzeichen getrennt. Wenn das Argument selbst jedoch ein Leerzeichen enthält, können Sie diese Argumente übergeben, indem Sie sie in doppelte oder einfache Anführungszeichen setzen.

Beispiel

Das folgende Programm demonstriert die Funktionsweise von Befehlszeilenargumenten.

C

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

>

>

Ausgabe in verschiedenen Szenarien:

1. Ohne Argument: Wenn der obige Code ohne Übergabe eines Arguments kompiliert und ausgeführt wird, erzeugt er die folgende Ausgabe.

Terminaleingang

$ ./a.out>

Ausgabe

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

2. Drei Argumente: Wenn der obige Code mit drei Argumenten kompiliert und ausgeführt wird, erzeugt er die folgende Ausgabe.

Terminaleingang

$ ./a.out First Second Third>

Ausgabe

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. Einzelargument: Wenn der obige Code mit einem einzelnen Argument, getrennt durch Leerzeichen, aber in doppelten Anführungszeichen, kompiliert und ausgeführt wird, erzeugt er die folgende Ausgabe.

Terminaleingang

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

Ausgabe

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. Ein einzelnes Argument in Anführungszeichen, getrennt durch Leerzeichen: Wenn der obige Code mit einem einzelnen Argument, getrennt durch Leerzeichen, aber in einfachen Anführungszeichen, kompiliert und ausgeführt wird, erzeugt er die folgende Ausgabe.

Terminaleingang

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

Ausgabe

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>