Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Switch break usw..

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
14.11.2008, 02:40 Uhr
0xdeadbeef
Gott
(Operator)


Im Denglischen sind solche Ausdrücke durchaus gewöhnlich. Im Deutschen dagegen spräche man wohl eher von "Lesen."
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
13.03.2009, 16:50 Uhr
huckleberry



Hallo Forum,

ich habe ein weitere Probleme mit getopt..

zB hat mein switch
-o == --output ein optionales Argument. wenn ich nun. -i und -o haben optionale paramter:
./progname -o outputfile.txt mache gehts nicht. Ich muss
./progname -ooutputfile.txt oder
./progname -o=outputfile.txt usw eingeben. Aber laut www.mario-konrad.ch/index.php?page=20017 soll es auch mit leerzeichen zwischen -o und outputfile.txt gehen.


Und wenn ich mehrere schalter gleichzeitig parsen will:
./progname -i inputfile.dat -o outputfile eingebe parst er in meinem fall auch net alle schalter..


C++:
int main (int argc, char *argv [])
{
        int next_option;
        const char * default_infile = "inputfile.dat";
        const char * default_outfile = "outputfile.txt";

        // Short options
        const char* const short_options = "hi::o::v";

        // Long options
        const struct option long_options[] = {
                // {long, parameter, NULL, short}
                {"help"        ,    no_argument,        NULL,    'h'},
                {"input"    ,    optional_argument,    NULL,    'i'},
                {"output"    ,    optional_argument,    NULL,    'o'},
                {"version"    ,    no_argument,        NULL,    'v'},
                {NULL        ,    0,                    NULL,      0} //At the end required
        };

        //char* output_filename = NULL;     //Output filename
        char* input_filename = NULL;    //Input filename

        prog_name = argv[0];

        next_option = getopt_long(
                              argc,
                              argv,
                              short_options,
                              long_options,
                              NULL);

        switch (next_option) {
        case 'h':
                //gibt hilfe-text aus
                print_usage(stdout, 0);
                break;
        case 'i':
                //todo eingabe-datei einlesen.
                printf("Input Readen...\n");
                break;
        case 'o':
                //ausgabe datei festlegen
                if (optarg == NULL) {
                        const char * output_filename = default_outfile;
                        printf("ofn: %s\n", output_filename);
                } else {
                        const char * output_filename = optarg;
                        printf("ofn: %s\n", output_filename);
                }
                break;
        case 'v':
                //version ausgeben
                printf("\033[0;31m %s \t Version 0.0.1 !\033[0m\n", prog_name);
                break;
        case -1:
                printf("Case mit -1\n");
                break;
        default:
                printf("Use:\033[0;31m\t'%s -h'\t\033[0mfor help.\n", prog_name);
        } //end_switch_next_option

        //exit main
        return 0;
}

--
There are 10 types, those who understand binary and those who don't...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
13.03.2009, 17:39 Uhr
0xdeadbeef
Gott
(Operator)


Nicht bei optionalen Argumenten, wegen der Doppeldeutigkeit. -o foo könnte sowohl -o mit Argument foo als auch -o ohne Argument und foo als weiteres Argument dahinter bedeuten - GNU ist der Ansicht, das letzteres sinnvoller ist, mutmaßlich, weil es sonst keine Möglichkeit gäbe, das auszudrücken.

Wenn -o ein Argument verlangt (also nur ein Doppelpunkt im Optionsstring), dann wird -o foo also -o mit Argument foo verstanden.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: