argv[2] == '-k' << wie macht man sowas richtig?
-
Moinsen, ich will den dritten eingabeparameter vergleichen mit '-k', leider geht es so nicht, aber wie geht es dann?
-
strcmp()
strncmp()
Strings kann man nicht mit den Vergleichsoperatoren vergleichen.
-
Ich wähle in so nem Fall immer folgende Methode:
for ( count = 1; count < argc; count++ ) { // check parameter -d xxxx if ( strcmp( argv[count], "-d" ) == 0 ) { } else // check parameter -f xxxx if ( strcmp( argv[count], "-f" ) == 0 ) { } else // check parameter -c xxxx if ( strcmp( argv[count], "-c" ) == 0 ) { } else // check parameter -c xxxx if ( strcmp( argv[count], "-r" ) == 0 ) { } else // check parameter -t (testmode) if ( strcmp( argv[count], "-t" ) == 0 ) { } else // unknown parameter { printf( "unknown parameter %s.\n", argv[count] ); } }
-
oder eventuell etwas kürzer:
if(argv[i][0]=='-') switch(argv[i][1]) { case 'c'://param -c //... break; case 'd': //... break; }
-
Hallo,
oder noch kürzer und effektiver:#include <stdio.h> #include <unistd.h> int main(int argc,char **argv) { char c; while ((c = getopt(argc, argv, ":abf:o:")) != -1) { switch(c) { case 'a': printf("Ein a \n"); break; case 'b': printf("Ein b \n"); break; case 'c': printf("Ein c \n"); break; case 'o': printf("Ein o mit: %s",optarg); break; } } return 0; }
Denn die bisherigen Lösungen scheitern z.B. hier dran:
prog.exe -f -n //Funktioniert
prog.exe -fn //Funktioniert nicht, obwohl gänige Art unter Unix
-
vielen dank, funktioniert wunderbar!!