首页 > 代码库 > getopt函数的用法

getopt函数的用法

Linux提供了一个解析命令行参数的函数。

#include <unistd.h>       int getopt(int argc, char * const argv[],                  const char *optstring);       extern char *optarg;       extern int optind, opterr, optopt;

使用这个函数,我们可以这样运行命令

./a.out -n -t 100

n后面不需要参数,t需要一个数值作为参数。

代码如下:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <errno.h>#define ERR_EXIT(m)     do {         perror(m);        exit(EXIT_FAILURE);    }while(0)int main(int argc, char *argv[]){    int opt;    while(1)    {        opt = getopt(argc, argv, "nt:");        if(opt == ?)            exit(EXIT_FAILURE);        if(opt == -1)            break;        switch(opt)        {            case n:                printf("AAAAAAAA\n");                break;            case t:                printf("BBBBBBBB\n");                int n = atoi(optarg);                printf("n = %d\n", n);        }    }    return 0;}

当输入非法参数时,getopt返回’?’,当解析完毕时,返回-1.

如果需要参数,那么使用optarg获取,这是一个全局变量。

注意getopt的第三个参数”nt:”,说明可用的参数有n和t,t后面有一个冒号,说明t需要额外的参数。

运行结果如下:

5:30:22 wing@ubuntu msg ./getopt_test -nAAAAAAAA5:30:26 wing@ubuntu msg ./getopt_test -t ./getopt_test: option requires an argument -- t5:30:31 wing@ubuntu msg ./getopt_test -t 100                                           1 ?BBBBBBBBn = 100

getopt函数的用法