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... |