德州做网站的,企业网站栏目设置说明,广东网络品牌建站公司,wordpress 微信二维码登录函数getopt()用来分析命令行参数#xff0c;其函数原型和相关变量声明如下#xff1a; #include extern char *optarg; extern int optind, // 初始化值为1#xff0c;下一次调用getopt时#xff0c;从optind存储的位置重新开始检查选项#xff0c;也就是从下一个-的选项…函数getopt()用来分析命令行参数其函数原型和相关变量声明如下 #include extern char *optarg; extern int optind, // 初始化值为1下一次调用getopt时从optind存储的位置重新开始检查选项也就是从下一个-的选项开始。 extern int opterr, // 初始化值为1当opterr0时getopt不向stderr输出错误信息。 extern int optopt; // 当命令行选项字符不包括在optstring中或者选项缺少必要的参数时该选项存储在optopt中getopt返回’?’。 int getopt(int argc, char * const argv[], const char *optstring); optarg和optind是两个最重要的external 变量。optarg是指向参数的指针当然这只针对有参数的选项optind是argv[]数组的索引众所周知argv[0]是函数名称所有参数从argv[1] 开始所以optind被初始化设置指为1。 每调用一次getopt()函数返回一个选项如果该选项有参数则optarg指向该参数。 在命令行选项参数再也检查不到optstring中包含的选项时返回-1。 函数getopt()有三个参数argc和argv[]应该不需要多说下面说一下字符串optstring它是作为选项的字符串的列表。 函数getopt()认为optstring中以- ’开头的字符注意不是字符串就是命令行参数选项有的参数选项后面可以跟参数值。optstring中的格式规范如下 1) 单个字符表示选项 2) 单个字符后接一个冒号”:”表示该选项后必须跟一个参数值。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。 3) 单个字符后跟两个冒号”:”表示该选项后必须跟一个参数。 参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。这个特性是GNU的扩展。 #include #include int main(int argc,char *argv[]) { int ch; opterr0; while((chgetopt(argc,argv,a:b::cde))!-1) { printf(/n/n/n); printf(optind:%d/n,optind); printf(optarg:%s/n,optarg); printf(ch:%c/n,ch); switch(ch) { case a: printf(option a:%s/n,optarg); break; case b: printf(option b:%s/n,optarg); break; case c: printf(option c/n); break; case d: printf(option d/n); break; case e: printf(option e/n); break; default: printf(other option:%c/n,ch); } printf(optopt%c/n,optopt); } }