我在获取正确数量的参数时遇到问题:
while((opt=getopt(argc, argv, ":a:c:SL")) != -1)
如果我启动脚本:./script -a ok -c 1 -S -L
argc 变量等于 7
问题是当我想在./script -a ok -c 1 -SS -L
argc 变量等于 7时启动脚本,但它应该是 8 个原因(SS(或 LL/CC)需要算作两个)。
这听起来像是一个XY 问题。我怀疑您要计算getopt
处理的参数数量的原因是访问任何以下不是选项的参数。
该手册页指向的解决方案:
如果没有更多选项字符,则
getopt()
返回 -1。然后optind
是argv
第一个argv
不是选项的元素的索引。
一旦你的while
循环结束,你可以做到以下几点:
int i;
for (i = optind; i < argc; i++) {
printf("non-option arument: %s\n", argv[i]);
}
或者,您可以向上移动argv
,使其指向第一个非选项参数,并相应地递减argc
。然后你可以从 0 开始索引:
argc -= optind;
argv += optind;
int i;
for (i = 0; i < argc; i++) {
printf("non-option arument: %s\n", argv[i]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句