C Programm mit Optionen aufrufen

Ich schreibe gerade ein kleines C Programm welches mit verschiedenen Optionen aufgerufen werden kann.
Welche Option eingegeben wurde frage ich so ab:
Code:
while( (c1 = getopt(argc, argv, "si")) != EOF ){
		switch( c1 ){
			case 's':
				opt_s = true;
				break;
			case 'i':
				opt_i = true;
				break;
			case '?':
				usage();
				break;
			default:
				assert(0);
				break;
		}
	}
Funktioniert alles wunderbar. Nur möchte ich auch die Möglichkeit bieten gar keine Option anzugeben. Da komme ich jetzt immer in case'?' rein. Wie kann ich abfragen ob keine Option angegeben wurde?
 
Schon mal das ausprobiert?
Code:
while( (c1 = getopt(argc, argv, "si")) != -1 ){
...
}
 
EOF ist normalerweise als -1 definiert, ist also genau das selbe...
Besser wäre es doch, vorher einfach abzufragen, ob überhaupt weitere Optionen/Argumente angegeben wurden und nur dann in die Schleife zu laufen.
 
@lockshe
Jo. Er kann zb einfach argc testen und bei > 0 einfach getopt nutzen.

Oder ohne das:

Du kannst im default ein abort() machen und anhand einiger variablen zu getopt feststellen ob die argumentlist leer war.

zb:
Code:
int
main (int argc, char **argv)
{
  int aflag = 0;
  int bflag = 0;
  char *cvalue = NULL;
  int index;
  int c;

  opterr = 0;

  while ((c = getopt (argc, argv, "ab:")) != -1)
    switch (c)
      {
      case 'a':
        aflag = 1;
        break;
      case 'b':
        bflag = 1;
        break;
      default:
        abort ();
      }
  
 // hier abgrabschen und gucken
  printf ("aflag = %d, bflag = %d, cvalue = %s\n", aflag, bflag, cvalue);

  return 0;
}
 
Zurück
Oben