Anfängerfrage zu Kommandozeilenparameter



  • Hallo!

    Ich habe gerade ein kleines Proggi geschrieben, das mir die uebergebenen Kommandozeilenparameter anzeigen soll. Also nur zur Uebung.
    Es funktioniert soweit prima, ich wollte nur wissen, ob die Abbruchbedingung in meiner while-schleife korrekt ist:

    #include <cstdio>
    
    int main(int argc, char *argv[])
    {
        printf("Anzahl uebergebener Argumente: %d\n", argc);
        int i = 0;
        while(argv[i] != NULL)
        {
           printf("Argument %d: %s\n", i, argv[i]);
           i++;
        }
        getchar();
        return 0;
    }
    

    ich denke das laeuft folgendermaßen ab:
    *argv[] ist ein Array aus Zeigern, jede Adresse des Arrays zeigt auf einen String, den jeweiligen Kommandozeilenparameter.
    mit argv[i] überprüfe ich also, ob der enthaltene Wert (die Adresse) ungleich null ist. Kann man das so machen? Also das Ende eines Arrays mit NULL erkennen?

    ciao,
    sonja



  • _sonja schrieb:

    Also das Ende eines Arrays mit NULL erkennen?

    *Dieses* Arrays ja, aber allgemein gilt das nicht.

    Du hast doch zusätzlich die Information, daß argc die Anzahl der Parameter enthält. Das ist die übliche Vorgehensweise: man merkt sich, wie viele Elemente das Array enthält und rattert die ab.

    Eine Ausnahme zu dieser Regel sind Strings:
    char x[] = "abc" bedeutet bekanntermaßen das gleiche, wie char x[] = {'a', 'b', 'c', '\0' }

    Die 0 ('\0') ist für Strings typischerweise das letzte interessante Element.



  • OK, danke!
    Ja klar, mit einer For-Schleife funktioniert es natürlich auch, ich wollte halt nur mal Wissen, ob es so auch möglich ist.

    Vielen Dank für die schnelle Antwort, hast mir sehr geholfen 😉


Anmelden zum Antworten