Wie werden Argumente aus der Konsolenbefehlszeile in ein Programm übergeben?



  • Für viel sicher nichts neues aber ich möchte es gerne wissen...

    Also es geht um die simple Übergabe von Argumenten die man in die Konsole eingibt:
    Beispiel:

    user@linux:~>programm arg1 arg2

    In diesem Fall sollen arg1 und arg2 in das Programm übergeben werden. Wie macht man das?
    Danke im Voraus...



  • für solche fälle benutzt man die main funktion mit dem prototyp

    int main(int argc, char **argv);
    

    den rest solltest du selbst herausfinden können



  • Sehe ich das jetzt so richtig, dass ich den Wert so wieder zurück bekomme:

    int main(int argc, char **argv)
    {
    	cout<< argc << endl;
            cout<< argc << endl;
    
    	return 0;
    
    }
    

    Gebe ich das jetzt mal so ein, bekomme ich den Wert 5 und 0x7ffffe84
    # /programm x y 3 4
    5
    0x7ffffe84

    Sehe ich das richtig dass die 5 die Anzahl der Argumente ist einschl. des Programmnamens, und was mache ich mit 0x7ffffe84? Ist das eine Art Array...?



  • argv ist ein Array von char Arrays mit argc Einträgen.

    int main(int argc, char **argv)
    {
        cout<< argc << endl;
    
        for (int i=0; i<argc; i++) {
            cout<< argv[i] << endl;
         }
    
        return 0;
    
    }
    

    ⚠ Du bekommst dabei char arrays (c strings) zurück. Wenn du Integers oder andere strukturierte Daten erwartest mußt du die zuerst umwandeln bevor du sie weiterverwenden kannst.



  • argc = Anzahl der Parameter
    **argv = Array von char Zeigern

    Auslesen kannst du das ganze z.B. so:

    for(int i = 0; i < argc; i++)
        std::cout << argv[i] << std::endl;
    

    Dabei ist argv[0] im Regelfall der Programmname, das muss aber nicht so sein.

    //Edit:
    Ups zu langsam 😃



  • jbo75 schrieb:

    Dabei ist argv[0] im Regelfall der Programmname, das muss aber nicht so sein.

    Etwas genauer: In argv[0] steht wie das Programm aufgerufen wurde. Dabei kann darin auch ein Pfad und eine eventuell eingegebene Dateiendung mit enthalten sein. Je nachdem was man halt eingibt um das Programm zu starten.

    Greetz



  • Danke, hat weiter geholfen!!!


Anmelden zum Antworten