Parser für Kommandozeilenargumente will nicht..
-
Also ich hab ein Programm das über Kommandozeile genutzt werden soll
Die Parameter verarbeite ich wie folgt:int parseParam(int argc, char **argv) { int i = 1; // predefine values config.key = 0xc027201; config.function = FUNCTION_GET; config.at = 0; config.as = AS_CHAR; config.count = -1; config.bufsize = 0; config.buffer = 0; config.value = 0; // überschreibe predefinitions while (i < argc) { // testausgabe printf ("argument: '%s'\n", argv[i]); if (strcmp(argv[i], "get")) { config.function = FUNCTION_GET; } else if (strcmp(argv[i], "put") == 0) { i++; config.value = argv[i]; config.function = FUNCTION_PUT; } else if (strcmp(argv[i], "key") == 0) { i++; config.key = atoi(argv[i]); } else if (strcmp(argv[i], "at") == 0) { i++; config.at = atoi(argv[i]); } else if (strcmp(argv[i], "count") == 0) { i++; config.count = atoi(argv[i]); } else if (strcmp(argv[i], "char") == 0) { config.as = AS_CHAR; } else if (strcmp(argv[i], "int") == 0) { config.as = AS_INT; } else if (strcmp(argv[i], "long") == 0) { config.as = AS_LONG; } else if (strcmp(argv[i], "real") == 0) { config.as = AS_REAL; } else if (strcmp(argv[i], "double") == 0) { config.as = AS_DOUBLE; } else { // return -1; } i++; } return 0; }
mein testprogramm tut dann folgendes:
./test put 'x' char at 120 count 1
argument: 'put'
argument: 'x'
argument: 'char'
argument: 'at'
argument: '120'
argument: 'count'
argument: '1'eigentlich sollten dort nur put char at count stehen.
nehm ich das return -1 wieder rein, kriege ich gleich beim ersten Parameter einen Abbruch der Funktion...
Kann wer den Fehler finden? ich bin grad zu doof dazu
-
Jetzt seh ichs..
ihr auch? ^^