getopt() mit 2 Argumenten hinter Optionsschalter



  • wenn z.B. die Optionsliste von getopt() so aussieht:

    getopt(argc, argv, "d:l:")
    

    heißt das ja, dass wegen der Doppelpunkte hinter den Optionen -d und -l ein Argument erwartet wird, z.B.

    %prog -d arg

    Das arg bekommt man dann mit "optarg".

    Wie kann man das aber anstellen, wenn man 2 Argumente hinter "-d" haben will?

    z.B.
    %prog -d arg0 arg1

    Wie komme ich dann an das arg1 ?



  • Wenn keiner was besseres hat, würde ich es mit

    -d "arg arg2"
    

    machen und dann selber den ganzen String von optarg parsen und in Einzelstrings zerteilen.



  • man: getopt(3) - nach dem Aufruf enthält 'optind' den Index des nächsten Kommando-Arguments für die Weiterarbeit - das wäre in deinem Fall der Index von "arg1":

    switch(ch)
    {
      case 'd':
        printf("d option mit %s,%s\n",optarg,argv[optind];
        ++optind;//den zweiten Parameter überspringen
        break;
      ...
    }
    

    (so würde ich es machen - eventuell mit Fehlerüberprüfung, ob dort wirklich ein zweites Argument kam)



  • ja, das ist gut

    Danke!


Anmelden zum Antworten