Thread: the best way to check if command line argumets are valid

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User Mortissus's Avatar
    Join Date
    Dec 2004
    Location
    Brazil, Porto Alegre
    Posts
    152
    int getopt(int argc, char * const argv[], const char *optstring);

    It works on Linux and gcc on Windows.

    Edit: I am pasting an example from the man page itself:
    Code:
    #include <stdio.h>     /* for printf */
    #include <stdlib.h>    /* for exit */
    #include <getopt.h>
    
    int
    main (int argc, char **argv) {
    	int c;
    	int digit_optind = 0;
    
    	while (1) {
    		int this_option_optind = optind ? optind : 1;
    		int option_index = 0;
    		static struct option long_options[] = {
    			{"add", 1, 0, 0},
    			{"append", 0, 0, 0},
    			{"delete", 1, 0, 0},
    			{"verbose", 0, 0, 0},
    			{"create", 1, 0, 'c'},
    			{"file", 1, 0, 0},
    			{0, 0, 0, 0}
    		};
    
    		c = getopt_long (argc, argv, "abc:d:012",
    				 long_options, &option_index);
    		if (c == -1)
    			break;
    
    		switch (c) {
    		case 0:
    			printf ("option &#37;s", long_options[option_index].name);
    			if (optarg)
    				printf (" with arg %s", optarg);
    			printf ("\n");
    			break;
    
    		case '0':
    		case '1':
    		case '2':
    			if (digit_optind != 0 && digit_optind != this_option_optind)
    				printf ("digits occur in two different argv-elements.\n");
    			digit_optind = this_option_optind;
    			printf ("option %c\n", c);
    			break;
    
    		case 'a':
    			printf ("option a\n");
    			break;
    
    		case 'b':
    			printf ("option b\n");
    			break;
    
    		case 'c':
    			printf ("option c with value '%s'\n", optarg);
    			break;
    
    		case 'd':
    			printf ("option d with value '%s'\n", optarg);
    			break;
    
    		case '?':
    			break;
    
    		default:
    			printf ("?? getopt returned character code 0%o ??\n", c);
    		}
    	}
    
    	if (optind < argc) {
    		printf ("non-option ARGV-elements: ");
    		while (optind < argc)
    			printf ("%s ", argv[optind++]);
    		printf ("\n");
    	}
    
    	exit (0);
    }
    Last edited by Mortissus; 07-26-2007 at 07:19 AM. Reason: Edit

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. recursion error
    By cchallenged in forum C Programming
    Replies: 2
    Last Post: 12-18-2006, 09:15 AM
  2. Please check this loop
    By Daesom in forum C++ Programming
    Replies: 13
    Last Post: 11-02-2006, 01:52 AM
  3. Check application visibility
    By 3saul in forum Linux Programming
    Replies: 2
    Last Post: 02-13-2006, 05:13 PM
  4. Thank you so much...
    By ta1samail in forum C++ Programming
    Replies: 0
    Last Post: 10-10-2001, 08:49 PM
  5. check my code ( if statement, file existance )
    By Shadow in forum C Programming
    Replies: 1
    Last Post: 10-04-2001, 11:13 AM