- /*
- * 命令解析
- * int getopt(int argc,char * const argv[ ],const char * optstring);
- * Lzy 2011-6-12
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- int main(int argc, char *argv[])
- {
- int ret;
-
- while((ret = getopt(argc, argv,"hf:d")) != -1) //解析命令
- {
- switch(ret)
- {
- case 'h':
- printf("help menu\n");
- break;
-
- case 'f':
- printf("filename %s\n",optarg); //打印选项参数
- break;
-
- case 'd':
- printf("Debug mode\n");
- break;
-
- case '?':
- printf("no option %c\n",optopt); //无此选项
-
- default:
- exit(-1);
- }
- }
-
- for(ret = optind; ret < argc; ret++)
- {
- printf("Non option %s\n",argv[ret]); //命令行中还没有被解析的
- }
- return 0;
- }
#include
int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);
int getopt_long_only(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
20 世纪 90 年代,UNIX 应用程序开始支持长选项,即一对短横线、一个描述性选项名称,还可以包含一个使用等号连接到选项的参数。GNU提供了getopt-long()和 getopt-long-only()函数支持长选项的命令行解析,其中,后者的长选项字串是以一个短横线开始的,而非一对短横线。 getopt_long() 是同时支持长选项和短选项的 getopt() 版本。
阅读(1156) | 评论(0) | 转发(3) |