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? ^^


Anmelden zum Antworten