Frage zu optarg

  • Themenstarter Themenstarter Ladnaks
  • Beginndatum Beginndatum
L

Ladnaks

Mit untenstehendem Code lese ich die Optionen -a, -s und -d und das Argument der Option s ein. Nun habe ich das Problem, dass ich nicht weiß wie ich prüfen kann ob für Option s ein Argument angegeben wurde. Weiß jemand wie man das macht?

Code:
while((c=getopt(argc,argv,"as:d"))!=EOF){
                switch(c){
                        case 'a':
                                asel=TRUE;
                                (void)fprintf(stdout,"parameter a\n");
                                break;
                        case 's':
                                ssel=TRUE;
                                sarg=strtol(optarg,NULL,10);
                               if(errno == ERANGE){
                                        fp1("wrong input value for s\n");       
                                }               
                        case 'd':
                                dsel=TRUE;
                                (void)fprintf(stdout,"parameter d\n");
                                break;
                        case '?':
                                usage();
                                break;
                        default:
                                assert(0);
                                break;                                  

                }
 
Du hast definiert das -s genau einen Parameterwert benötigt. Optionale Parameter werden mit 2 Doppelpunkten gekennzeichnet. optarg ist dann 0.

Gruß
Ja, das optarg dann 0 ist habe ich mittlerweile schon bemerkt, aber wie kann ich unterscheiden ob optarg 0 ist weil kein Argument angegeben wurde oder ob es 0 ist weil 0 als Argument angegeben wurde?
 
Ja, das optarg dann 0 ist habe ich mittlerweile schon bemerkt, aber wie kann ich unterscheiden ob optarg 0 ist weil kein Argument angegeben wurde oder ob es 0 ist weil 0 als Argument angegeben wurde?
C:
if (optarg == NULL) {
  // Kein Argument angegeben
} else {
  // Argument angegeben. optarg verweist auf einen C-String mit dem Inhalt
}

Grüße,
Matthias
 
Zurück