getopt c++ HELP!!!



  • hiho
    ich komm nicht weiter, irgendwie funtionktioniert das net vielleicht ich weiß leider auch nicht woran es liegt. kann mir bitte jemand helfen? hier der code:

    #include <unistd.h>
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main(int argc, char *argv[]) {
        int opt;
        string html_dateiname, img_pfad;
        int lower_bound, upper_bound;
    
        while((opt = getopt(argc, argv, "o:c:p:h:")) != -1) {
            switch(opt) {
            case 'o':
                html_dateiname = optarg; //optarg enthält das Argument zur gerade
                                         //behandelten Option
                break;
            case 'c':
                sscanf(optarg, "%d,%d", &lower_bound, &upper_bound);
                break;
            case 'p':
                img_pfad = optarg;
                break;
           case 'h':
                printf ("HILFE ..."); 
           }
            exit(0);
    
        }
    
        //weiterer programmcode.
    }
    

    so far tarikon



  • Nimm doch mal das "exit(0)" aus der while-Schleife!
    Dann sollte es besser gehen 😉

    Martin



  • nö leider passiert genauso wenig 😞



  • was funktioniert denn nicht? Beschreib das Problem mal



  • ich will halt in der shell das programm z.B so ausführen:

    ./programmname -h

    dann sollte eigentlich z.B. die "HILFE" angezeigt werden im compiler läuft es ohne fehler durch aber ich versteh net warum das mit dem getopt nicht klappt



  • weil du verlangst, dass -h noch eine Option bekommt, lass das : nach h weg



  • hmpf nö 😞



  • also mein compiler ( g++ v-9.x ) meckert beim compilieren schon rum: stdio.h fehlt. nachdem ich die eingefuegt hatte, und den ":" nach dem "h" weggemacht hatte lief das ganze einwandfrei. das exit( 0 ) hab ich nat. auch aus der schleife entfernt.

    das ergebnis sah so aus:

    cypoc@greendale:~> ./getopt -h
    HILFE...cypoc@greendale:~>

    kann es sein, dass es bei dir genauso aussieht, und dass du nur "HILFE..." uebersehen hast?!

    mach mal aus deinem printf folgendes: printf( "HILFE...\r\n" );
    dann sollte das ganze in einer eigenen zeile stehen.

    wenn es das auch nicht war, weiss ich auch nicht... 😉

    ciao, cypoc


Anmelden zum Antworten