getopt函数用于解析命令行参数,如经常用到带选项的输入,如netstat –n / find –name filename 等等。下面谈谈其相关内容:
包含头文件:unistd.h
全局参数:
int opterr; //这个变量非零时,getopt()函数为“无效选项”和“缺少参数选项,并输出其错误信息。
char *optarg; //跟在带参数的选项后面的参数,如上面的filename
int optind; //argv的当前索引值,随着解析的过程增加
int optopt; //当发现无效选项字符之时,getopt()函数或返回'?'字符,无效字符会被记录到optopt中
code:
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
intc;
while((c= getopt(argc, argv, "ag:")) != -1)
{
switch(c)
{
case'g':
printf("%s,optind = %d\n", optarg, optind);
break;
case'a':
printf("%s,optind= %d\n","catch -a", optind);
break;
case'?':
printf("erroroccur,optind = %d, c = %c, opterr = %d \n", optind, (char)optopt);
break;
case':':
printf("-%cshould follow a value\n", (char)optopt);
default:
printf("unknown,c = %c\n", (char)optopt);
}
}
}
编译运行得到如下结果