c übergebene variablen

  • hallo!

    folgendes:

    mein programm sieht so aus:

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

    beim aufrufen des programms sollen 4 integer variablen übergeben werden. wie kann ich diese variablen mit hilfe von strtol aus argv herausholen?

    wäre super, wenn mir jemand helfen könnte! :)

    lg,thery

  • Hey, ich nehme mal an, du brauchst das, für das TGS Aufgabenblatt 11 :P
    Im Zusatzblatt zur letzten Hausübung waren da sehr nützliche Hinweise dazu.

    Grundsätzlich wird in argc die Anzahl der Worte, die du beim Programmaufruf eingibst, gespeichert.

    Folgende Möglichkeiten:
    ./prog1 (argc=1)
    ./prog1 prm1 (argc=2)
    ./prog1 prm1 prm2 (argc=3)
    usw...

    Damit kannst du also mal ganz einfach überprüfen, ob die Anzahl der übergebenen Parameter stimmt.

    argv ist ein char array. In ihm werden nun oben genannte Worte gespeichert. An der Stelle argv[0] hast du den Programmnamen, an der Stelle argv[1] den ersten Parameter usw.

    Um jetzt aber die als char vorhandenen Parameter für unser Beispiel benutzen zu können, musst du diese erst in "brauchbare" Datentypen umwandeln. Hier kommt strtol ins Spiel. Diese Funktion wandelt dir strings (also char arrays) in long oder int Variablen um. Näheres dazu findest du in den man-Pages zu strtol. Praktisch dabei ist, dass du bei strtol auch einen end-Pointer benutzen kannst, der an das Ende des Strings zeigt und mithilfe dessen du überprüfen kannst, ob überhaupt eine Zahl und nicht ein anderes Zeichen übergeben wurde.


    Ich hoffe, die Informationen helfen dir soweit mal ein wenig :O

  • Besser noch statt dem 0-Pointer einen einen error-Pointer zu machen für Fehlermeldungen, falls "falsche" Parameter übergeben wurden :)

    a geh, wir sind ja hier nicht bei sysprog :P
    wollte "thery" nur in die richtige richtung bringen, fuer solche feinheiten hat man ja dann ohnehin "man strtol" mit einem ausfuehrlichen beispiel.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Nicht C89-konformen Code zu schreiben ist immer ein Grund, zumindest im Fegefeuer zu landen.

    na servas, da gehts ja ganz genau her :shinner:. so besser?

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Und jetzt bitte nochmal in K&R C :)

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]

    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!