Peter: C++ main (int argc, char *argv[])-Bedeutung?

Hallo,

aus meinen frühen Konosolen C++-Zeiten habe ich main immer ohne Parameter definiert, jetzt habe ich schon öfters diese Deklaration gesehen: main (int argc, char *argv[]).

die Argumente werden jedoch im Funktionsablauf nicht weiter verwendet...
wozu dienen sie?

Danke!

  1. Hi,

    ich tippe mal

    int argc = argument count, wieviele Argumente/Kommandozeilenparameter mitgegeben worden sind
    char * argv[] = argument values, ein Array in welchem die mitgegebenen Argumente/Kommandozeilenparameter als "char" enthalten sind?

    Es besteht kein Zwang - soweit ich weiss - mitgegebene Argumente in einer Methode auch zu benutzen?! :)

    Ciao, Frank

  2. Hallo,

    aus meinen frühen Konosolen C++-Zeiten habe ich main immer ohne Parameter definiert, jetzt habe ich schon öfters diese Deklaration gesehen: main (int argc, char *argv[]).

    die Argumente werden jedoch im Funktionsablauf nicht weiter verwendet...
    wozu dienen sie?

    argc enthält die Anzahl an Kommandozeilenparameter + 1 und argv enthält die Kommandozeilenparameter sowie den Namen des aufgerufenen Befehls.

    Wenn Du beispielsweise auf der Kommandozeile folgendes aufrufst ("meinprogramm" sei der Weg, Dein Programm aufzurufen):

    meinprogramm hallo welt

    dann ist argc == 3 und argv[0] == "meinprogramm", argv[1] == "hallo", argv[2] == "welt" und argv[3] == NULL.

    Das ist übrigens nicht nur auf der Kommandozeile relevant. Wenn Du zum Beispiel ein Programm schreibst, das PDF-Dateien anzeigt, wir nennen es jetzt mal "zeigepdfan" und Du dieses Programm in den Einstellungen Deines Betriebsystems/Deiner Desktopumgebung mit dem Datentyp PDF verküpfst, dann wird bei jedem direkten Öffnen einer PDF-Datei das Programm aufgerufen, als ob es so über die Kommandozeile aufgerufen würde:

    zeigepdfan /pfad/zur/datei.pdf

    (oder unter Windows: zeigepdfan C:\pfad\zur\datei.pdf)

    Das heißt, argv[0] wäre dan "zeigepdfan" und argv[1] wäre "/pfad/zur/datei.pdf", argv[2] wäre NULL und argc wäre 2.

    Viele Grüße,
    Christian

  3. Hi,

    die Argumente werden jedoch im Funktionsablauf nicht weiter verwendet...
    wozu dienen sie?

    Damit kannst du auf Kommandozeilen-Parameter zugreifen.

    Das Argument argc (für argument counter) ist die Anzahl der Argumente in
    der Kommandozeile. Das Argument argv (für argument vector) ist ein Zeigerarray mit den einzelnen Parametern.

    Hier ein kleines C-Beispiel:

      
    #include <stdio.h>  
      
    main(int argc, char *argv[]) /* mit Argument-Uebergabe */  
    {  
        int i=0;  
        printf("Es wurden %d Argument(e) uebergeben\n", argc);  
        for (i=0; i< argc; i++)  
        {  
            printf("%d. Argument: %s\n",i+1, argv[i]);  
        }  
    }  
    
    

    mfG,
    steckl

  4. danke, alles klar :-)