getopt函数的使用
在不知道这个函数之前会自己写一套函数来处理程序的输入参数。现在有了getopt就可以很方便的提取命令行参数了。下面就来说说getopt的使用。
要想使用getopt这个函数,必须包含相对应的头文件,这个头文件是:unistd.h。
和getopt相关的几个变量需要我们注意:
下面再来看看getopt的函数原型:int getopt (int argc, char *const *argv, const char *options)
argc标识选项个数,argv输入参数向量, 这两个参数对应了main函数中的两个参数。options标识了合法的选项名称。
option的规则如下,每一个字符代表了一个option,字符后面可以带有(:)和(::),分别表示该选项必须有参数和参数可选。比如“a:”标识选项a必须有对应参数,“a::”a选项后可以不加参数。
getopt每一次会返回对应的选项,返回-1表示处理结束。
#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; }
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
本博客全部文章(除文章标题或文内有另外特别说明的)皆为本人辛苦码字而得,本人拥有其版权。
转载时请以超链接形式标明文章原始出处和作者。谢谢