Linux环境C语言编程的命令行参数处理

在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 -z
2. 单个字符后接一个冒号  (参数形式为:  -x yyy)
    表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:)
3. 单个字符后跟两个冒号,表示该选项后必须跟一个参数。(参数形式为:  -xyyy)

    参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(如上例中的e::)


你可能感兴趣的:(c,命令行参数)