在Linux下有一个头文件:
#include<unistd.h>
其中有一系列函数及其定义:
int getopt(int argc,char * const argv[ ],const char * optstring);
extern char *optarg;
extern int optind, opterr, optopt;
这一系列定义专门用于解析命令行参数。
范例:
#include<stdio.h>
#include<unistd.h>
int main(int argc,char **argv)
{
int ch;
opterr = 0;
while((ch = getopt(argc,argv,”a:bcde”))!= -1)
{
switch(ch)
{
case ‘a’: printf(“option a:’%s’\n”,optarg); break;
case ‘b’: printf(“option b :b\n”); break;
default: printf(“other option :%c\n”,ch);
}
}
printf(“optopt +%c\n”,optopt);
}
其中:
getopt的第三个参数是一个字符串,此字符串描述了参数的形式.
optstring中的指定的内容的意义(例如getopt(argc, argv, "ab:c:de::")如下:
1. 单个字符,表示选项(如上例中的abcde各为一个选项),参数形式为: -x -y -z2. 单个字符后接一个冒号 (参数形式为: -x yyy)
表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:)
3. 单个字符后跟两个冒号,表示该选项后必须跟一个参数。(参数形式为: -xyyy)
参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(如上例中的e::)