首页 > 其他 > 详细

getopt函数的使用

时间:2014-02-09 16:34:26      阅读:243      评论:0      收藏:0      [点我收藏+]

在不知道这个函数之前会自己写一套函数来处理程序的输入参数。现在有了getopt就可以很方便的提取命令行参数了。下面就来说说getopt的使用。

要想使用getopt这个函数,必须包含相对应的头文件,这个头文件是:unistd.h

和getopt相关的几个变量需要我们注意:

int opterr 如果这个变量不为0,那么当getopt检测到没有标识的输出参数是就会向标准打印上输出相应的信息。如果不想看到这些信息,那么在函数中只要将这个变量设置为0就好了
int optopt 当getopt遇到了位置的输入选项,或者输入选项没有对应参数时,会将这个选项记录在这个变量中
int optind 这个变量存储了下一个选项的起始位置
char * optarg 这个变量指向了输入选项的对应参数

下面再来看看getopt的函数原型:int getopt (int argc, char *const *argv, const char *options)

argc标识选项个数,argv输入参数向量, 这两个参数对应了main函数中的两个参数。options标识了合法的选项名称。

option的规则如下,每一个字符代表了一个option,字符后面可以带有(:)和(::),分别表示该选项必须有参数和参数可选。比如“a:”标识选项a必须有对应参数,“a::”a选项后可以不加参数。

getopt每一次会返回对应的选项,返回-1表示处理结束。

bubuko.com,布布扣
#include "unistd.h"
#include "stdio.h"

int main(int argc, char **argv)
{
    int opt;
    opterr = 0; /* disable getopt() err info output */
    while((opt=getopt(argc, argv, "xuns:"))!=-1)
    {
        switch(opt)
        {
            case x:
                printf("%c opt has been well received\n", opt);
                break;
            case u:
                printf("%c opt has been well received\n", opt);
                break;
            case n:
                printf("%c opt has been well received\n", opt);
                break;
            case s:
                printf("%c opt has been well received\n", opt);
                printf("recved str:%s\n", optarg);
                break;
            default:
                printf("error:%c\n", optopt);/*optopt is another global virable provide by getopt, which stores unknown option*/
                break;
        }
    }
    return 0;
}
bubuko.com,布布扣

 getopt函数的不足在于它能处理的选项都是单字符的(-a -b -c),如果输入选项是字符串(--verbose)那么就需要getopt_long来进行处理了。

 

参考文献:

http://www.gnu.org/software/libc/manual/html_node/Getopt.html#Getopt

http://www.ibm.com/developerworks/cn/aix/library/au-unix-getopt.html

getopt函数的使用

原文:http://www.cnblogs.com/zhx831/p/3541382.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!