getopt mehrere optionale Werte?

#2470065
Lesenswert?

Hallo liebe Forenuser!

Ich müsste Argumente der Form "programm -n 22 34" also ein Parameter mit 
zwei weiteren zugehörigen zweistelligen Argumenten.

Wenn man nur ein "optionales Argument" zur Verarbeitung hat, kann man 
das ziemlich schnell mit "n:" und dann über die Variable optarg machen, 
aber wie macht man das mit zwei?

mfg
chris
#2470483
Lesenswert?

Da muss man etwas tricksen. Wenn sich die mehrfachen argumente ganz am 
Ende befinden, also "deineExe -i d:\test.bin -f c:\Out1.bin d:\Out2.bin"
kann man das so machen:
1
int main(int argc, char *argv[]){
2
    char option, *optend;
3
    char *path1;
4
    char *path2, *infile;
5

6
    int i,size;
7

8
    while ((option = getopt(argc, argv, "f:i:?")) !=  -1){
9
    switch(option){
10
      case 'f':
11
           size = atoi(optarg);
12
           printf("\nSize: %d",size);
13
        break;
14
      case 'o':
15
        infile = optarg;
16
        break;
17
    }
18
  }
19
  if((argc-optind) == 2 ){
20
           path1 = argv[optind];
21
           path2 = argv[optind+1];
22
           printf("\nP1: %s P2: %s", path1, path2);
23
  }
24

25
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren