当前位置:  技术问答>linux和unix

菜鸟求问一个Advanced Linux Programming里的问题

    来源: 互联网  发布时间:2017-01-25

    本文导语:  Mark Mitchell,Jeffery Oldham等写的书 里面第二章 Writing Good GNU/Linux Software    的 2.1.3节 Using getopt_long   里面程序已经写好,这个程序的意图也知道,已经用gcc编译过了,编译后文件为getopt_long 但是不知道怎么用,...

Mark Mitchell,Jeffery Oldham等写的书
里面第二章 Writing Good GNU/Linux Software    的 2.1.3节 Using getopt_long
 
里面程序已经写好,这个程序的意图也知道,已经用gcc编译过了,编译后文件为getopt_long
但是不知道怎么用,怎么测试
网上找半天找不到,我想这么测试来着
./getopt_long -hv 
但是感觉结果乖乖的,不是应该有的
希望高手给知道下,菜鸟求知道啦

代码如下:

#include 
#include 
#include 

/*The name of this program.*/
const char * program_name;

/*Prints usage information for this program to STREAM(stdout or stderr),
and exit the program with EXIT_CODE.Does not return.*/
void print_usage(FILE * stream, int exit_code){
  fprintf(stream, "Usage: %s options[inputfile ...]n", program_name);
  fprintf(stream,
  "  -h --help              Display this usage information.n "
  "  -o --output filename   Write output to file.n "
  "  -v --verbose           Print verbose messages.n ");
  exit(exit_code);
}

/*Main program entry point. ARGC contains number of argument list elements;
ARGV is an array of pointers to them.*/
int main(int argc, char * argv[]){

  int next_option;
  /*A string listing valid short options letters.*/
  const char * const short_options = "ho:v";
  /*An array describing valid long options.*/
  const struct option long_options[] = {
    {"help",   0, NULL, 'h'},
    {"output", 1, NULL, 'o'},
    {"verbose",0, NULL, 'v'},
    {NULL,     0, NULL,  0 }   /*required at end of array.*/
  };

  /*the name of the file to receive program output,
  or NULL for standard output.*/
  const char * output_filename = NULL;
  /*whether to display verbose messages.*/
  int verbose = 0;

  /*remember the name of the program,to incorporate in messages.
   The name is stored in argv[0].*/
  program_name = argv[0];

  do{
    next_option = getopt_long(argc, argv, short_options, long_options, NULL);
    switch(next_option){
    case 'h':/*-h or --help*/
      /*User has requested usage information.Print it to standard output,
       and exit with exit code zero(normal termination).*/
      print_usage(stdout, 0);
    case 'o':/*-o or --output*/
      /*This option takes an argument,the name of the output file.*/
      output_filename = optarg;
      break;
    case 'v':/*-v or --verbose*/
      verbose = 1;
      break;
    case '?':/*The user specified an invalid option.*/
      /*Print usage information to standard error,and exit with
 exit code one(abnormal termination).*/
      print_usage(stderr, 1);
    case -1:/*done with options.*/
      break;
    default:/*sth else:unexpected.*/
      abort();
    }
  }
  while(next_option != -1);
  /*Done with options.OPTIND points to first nonoption argument.
   For demonstration purposes,print them if the verbose option was specified.*/
  if(verbose){
    int i;
    for(i = optind; i 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ----菜菜鸟第三问:-菜鸟菜问:JAVA如何求 根号、开次方? -----
  • 菜鸟问一个关于j2ee的菜鸟问题
  • 怎样从一个菜鸟级的java programer升级到一个菜鸟级的java developer
  • 一个连菜鸟都算不上的菜鸟
  • 菜鸟求问菜鸟问题 ,域名绑定
  • 博客 iis7站长之家
  • gcc问题---菜鸟发问之一,老大们帮忙啊!!菜鸟分不多,只好给这点了,对不起!!
  • 菜鸟又来问菜鸟问题了
  • 菜鸟的Linux练习疑问……
  • 菜鸟刚学jsp,还不知道怎么和sql server2000的数据库相连,我已经把odbc配好了,谁能给我一段和数据库相连的并显示所有数据的代码!菜鸟
  • 菜鸟提问,我怎么装redhat7。1
  • 菜鸟写的俄罗斯方块,请多多批评!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • ※菜鸟送分之一※ Red Hat Linux 的最高版本是多少?
  • 菜鸟问题:在Java中如何接收从键盘输入的字符串?
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • 菜鸟提问:包是什么概念?
  • 菜鸟问题~~快点进来拿分
  • 菜鸟菜问题1


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3