C语言中getopt()函数的用法

您所在的位置:网站首页 c字符串函数头文件 C语言中getopt()函数的用法

C语言中getopt()函数的用法

2024-07-14 00:01| 来源: 网络整理| 查看: 265

1.getopt()函数 getopt函数用来解析命令行选项,声明所在头文件为:

#include 1 函数原型如下:

int getopt(int argc, char * const argv[], const char *optstring); 1 第一个参数argc是参数个数,和main函数的argc一样;

第二个参数argv是字符串指针,和main函数的argv一样;

第三个参数 optstring 是选项字符串,是本文所要讲述的重点。

2. optstring 选项字符串的内容如下:

字符代表一个选项; 没有冒号就表示纯选项,不需要参数; 一个冒号代表该选项之后必须带有参数,可以使用空格,也可以不使用; 两个冒号代表该项之后的参数可写可不写; 还有一些错误处理:

针对字符后无冒号的设定:

不加空格带上参数后,会解析为这个两个独立选项合并; 加上空格带上参数,会只解析出选项,忽略参数。 针对字符后一个冒号的设定:带上空格多加几个参数后,只解析第一个,其余忽略; 如果不加参数,解析失败;

比如,"vha:b:c::"就表示: 支持-v选项,通常用于打印版本号; 支持-h选项,通常用于打印帮助信息; 支持-a选项,后面必须带有一个参数; 支持-b选项,后面必须带有一个参数; 支持-c选项,后面可以带参数,也可以不用带参数;

3. 使用的全局变量 使用该函数时,会用到/设置四个全局变量:

extern char* optarg; extern int optind; extern int opterr; extern int optopt;

optarg:用来保存选项的参数; optind:用来记录下一个检索位置; opterr:用来表示是否将错误信息输出到stderr; optopt:表示不在选项字符串optstring中的选项; 4. 示例程序

#include #include int main(int argc, char * argv[]) { int ch; printf("初始值:optind = %d,opterr = %d\n", optind, opterr); while ((ch = getopt(argc, argv, "vha:b:c::")) != -1) { printf("开始解析参数:optind = %d\n", optind); switch (ch) { case 'v': printf("捕获到选项: -v\n"); printf("系统版本v1.1.0\n"); break; case 'h': printf("捕获到选项: -h\n"); printf("用法示例: -a 1 -b 2 -c [\"hello\"]\n"); break; case 'a': printf("捕获到选项: -a\n"); printf("该选项参数为:%s\n\n", optarg); break; case 'b': printf("捕获到选项: -b\n"); printf("该选项参数为:%s\n\n", optarg); break; case 'c': printf("捕获到选项: -c\n"); printf("该选项参数为:%s\n\n", optarg); break; } } }

使用gcc编译:

gcc getopt_test.c -o getopt_test.o

单独测试每个选项:

 测试都没有问题,接下来再看看几种错误的情况: 

比如 -v 选项不需要参数,带个参数的结果如下:

再比如-a选项明确需要带一个参数,则带两个参数的结果如下:

 

如果不加参数,结果如下:

最后演示一个综合示例:

 

———————————————— 版权声明:本文为CSDN博主「Mculover666」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/Mculover666/article/details/106646339



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3