如何在C中计算argc

城市

我在获取正确数量的参数时遇到问题:

    while((opt=getopt(argc, argv, ":a:c:SL")) != -1)

如果我启动脚本:./script -a ok -c 1 -S -Largc 变量等于 7

问题是当我想在./script -a ok -c 1 -SS -Largc 变量等于 7时启动脚本,但它应该是 8 个原因(SS(或 LL/CC)需要算作两个)。

灌木丛

这听起来像是一个XY 问题我怀疑您要计算getopt处理的参数数量的原因是访问任何以下不是选项的参数。

手册页指向的解决方案:

如果没有更多选项字符,则getopt()返回 -1。然后optindargv第一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章