前言
C语言程序主要通过 main 函数的参数来传递命令行参数:
// 默认传递命令行参数
int main(int argc ,char * argv[])
{
...
}
其中 argc 表示参数个数(包含程序本身),argv是保存所有这些参数的二级数组。
我们可以直接操作这两个变量来处理参数,但是C标准库提供了一个更丰富的处理参数的方法,就是 getopt()。
getopt 介绍
函数声明如下:
#include <unistd.h>
int getopt(int argc, char * const argv[], const char *optstring);
getopt() 函数用于解析命令行参数。它的 argc 和 argv 参数通常直接从 main() 的参数直接传递而来。
optstring 是可以处理选项字母组成的字符串。该字串里的每个字符对应于一个以 ‘-’ 开头的选项。如果该字串里的任一字符后面有冒号,那么这个选项就要求有参数(如“hd:”对应于 '-h' 和 '-d', 其中 '-d' 后需接参数)。而如果选项后面接两个冒号,则说明这个选项后的参数是可选的,即可带参数也可不带参数。
全局变量
当给定 getopt() 命令参数的数量 (argc)、指向这些参数的数组 (argv) 和选项字串 (optstring) 后,getopt() 将返回第一个选项,并设置一些全局变量。
extern char *optarg;
extern int optind, opterr, optopt;
- char *optarg : 指向当前选项的参数字串(如果有)
- int optind : 变量 optind 是 argv
掌握C语言getopt函数:参数解析与错误处理详解

本文详细介绍了C语言中的getopt函数,包括其参数传递机制、处理选项和参数的方式、扫描模式以及错误处理策略。通过实例演示了如何使用getopt处理命令行选项,适合理解和实践命令行参数解析。
最低0.47元/天 解锁文章
735

被折叠的 条评论
为什么被折叠?



