Sample code , 用 getopt 取得 command line 的參數

5c30343361478502ed9711dd38115baf

#include "stdlib.h"
#include "stdio.h"
#include "getopt.h"
#include "string.h"

void print_help(int exval);
char program[100] = "sample";

int main(int argc, char *argv[]) {
  int opt;
  strcpy(program,argv[0]);
  if (argc == 1) print_help(1);
  while((opt = getopt(argc, argv, "hVvf:o:")) != -1) {
    switch(opt) {
      case 'h':
        print_help(0);
        break;
      case 'V':
        printf("%s", program);
        exit(0);
        break;
      case 'v':
        printf("%s: Verbose option is set '%c'\n", program, optopt);
        break;
      case 'f':
        printf("%s: Filename %s\n", program, optarg);
        break;
      case 'o':
        printf("Output: %s\n", optarg);
        break;
      case ':':
        fprintf(stderr, "%s: Error - Option '%c' needs a value\n\n", program, optopt);
        print_help(1);
        break;
      case '?':
        fprintf(stderr, "%s: Error - No such option: '%c'\n\n", program, optopt);
        print_help(1);
    }
  }
  
  for(; optind < argc; optind++) printf("argument: %s\n", argv[optind]);
  return 0;
}

// -----
void print_help(int exval) {
  printf("Usage: %s [-h] [-V] [-f FILE] [-o FILE]\n\n", program);
  printf(" -h print this help and exit\n");
  printf(" -V print version and exit\n\n");
  printf(" -v set verbose flag\n");
  printf(" -f FILE set intput file\n");
  printf(" -o FILE set output file\n\n");
  exit(exval);
}