getopt(分析命令行参数).docx
上传人:qw****27 上传时间:2024-09-12 格式:DOCX 页数:14 大小:28KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

getopt(分析命令行参数).docx

getopt(分析命令行参数).docx

预览

免费试读已结束,剩余 4 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Getopt命令行参数解析函数——getopt()getopt()函数声明如下:#include<unistd.h>intgetopt(intargc,char*constargv[],constchar*optstring);externchar*optarg;externintoptind,opterr,optopt;该函数的argc和argv参数通常直接从main()的参数直接传递而来。optstring是选项字母组成的字串。如果该字串里的任一字符后面有冒号,那么这个选项就要求有选项参数。当给定getopt()命令参数的数量(argc)、指向这些参数的数组(argv)和选项字串(optstring)后,getopt()将返回第一个选项,并设置一些全局变量。使用相同的参数再次调用该函数时,它将返回下一个选项,并设置相应的全局变量。如果不再有可识别的选项,将返回-1,此任务就完成了。getopt()所设置的全局变量包括:char*optarg——当前选项参数字串(如果有)。intoptind——argv的当前索引值。当getopt()在while循环中使用时,循环结束后,剩下的字串视为操作数,在argv[optind]至argv[argc-1]中可以找到。intopterr——这个变量非零时,getopt()函数为“无效选项”和“缺少参数选项,并输出其错误信息。intoptopt——当发现无效选项字符之时,getopt()函数或返回'?'字符,或返回':'字符,并且optopt包含了所发现的无效选项字符。以下面的程序为例:选项:-n——显示“我的名字”。-g——显示“我女朋友的名字”。-l——带参数的选项.清单2:#include<stdio.h>#include<unistd.h>intmain(intargc,char**argv){intoc;/*选项字符*/char*b_opt_arg;/*选项参数字串*/while((oc=getopt(argc,argv,"ngl:"))!=-1){switch(oc){case'n':printf("MynameisLyong.\n");break;case'g':printf("HernameisXxiong.\n");break;case'l':b_opt_arg=optarg;printf("Ourloveis%s\n",optarg);break;}}return0;}运行结果:$./opt_parse_demo-nMynameisLyong.$./opt_parse_demo-gHernameisXxiong.$./opt_parse_demo-lforeverOurloveisforever$./opt_parse_demo-nglforeverMynameisLyong.HernameisXxiong.Ourloveisforever6、改变getopt()对错误命令行参数信息的输出行为不正确的调用程序在所难免,这种错误要么是命令行选项无效,要么是缺少选项参数。正常情况下,getopt()会为这两种情况输出自己的出错信息,并且返回'?'。为了验证此事,可以修改一下上面的清单2中的代码。清单3:#include<stdio.h>#include<unistd.h>intmain(intargc,char**argv){intoc;/*选项字符*/char*b_opt_arg;/*选项参数字串*/while((oc=getopt(argc,argv,"ngl:"))!=-1){switch(oc){case'n':printf("MynameisLyong.\n");break;case'g':printf("HernameisXxiong.\n");break;case'l':b_opt_arg=optarg;printf("Ourloveis%s\n",optarg);break;case'?':printf("argumentserror!\n");break;}}return0;}输入一个错误的命令行,结果如下:$./opt_parse_demo-l./opt_parse_demo:optionr