getopt处理命令行参数
2021/9/10 6:07:09
本文主要是介绍getopt处理命令行参数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
函数说明
//函数原型,定义在<unistd.h> int getopt(int argc, char * const argv[], const char *optstring); //描述:getopt是用来解析命令行选项参数的,但是只能解析短选项: -d 100,不能解析长选项:--prefix //参数:argc:main()函数传递过来的参数的个数 //argv:main()函数传递过来的参数的字符串指针数组 //optstring:选项字符串,告知 getopt()可以处理哪个选项以及哪个选项需要参数 //返回值:若选项成功找到,返回选项字母;如果所有命令行选项都解析完毕,返回-1;如果遇到字符串不在optstring里,返回字符'?'
optstring参数
char *optstring = “ab:c::”; 单个字符a 表示选项a没有参数 格式:-a即可,不加参数 单字符加冒号b: 表示选项b有且必须加参数 格式:-b 100或-b100,但-b=100错 单字符加2冒号c:: 表示选项c可以有,也可以无 格式:-c200,其它格式错误
一些执行getopt生效的全局变量
optarg —— 指向当前选项参数(如果有)的指针。 optind —— 再次调用 getopt() 时的下一个 argv指针的索引。 optopt —— 最后一个未知选项。 opterr —— 如果不希望getopt()打印出错信息,则只要将全域变量opterr设为0即可。
其他
处理长选项参数,可以使用类似的函数:getopt_long
代码示例
#include<stdio.h> #include<unistd.h> int main(int argc,char* argv[]){ int ret; while( (ret = getopt(argc, argv, "ab:c::")) != -1 ){ //一般处理方式为循环处理,直到返回值为-1 switch (ret) { case 'a': printf("a=%s", optarg); printf("\t nextIndex=%d\n", optind); break; case 'b': printf("b=%s", optarg); printf("\t nextIndex=%d\n", optind); break; case 'c': printf("c=%s", optarg); printf("\t nextIndex=%d\n", optind); break; case '?': default: printf("default\n"); break; } } }
这篇关于getopt处理命令行参数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求