问题描述
我有一个程序,我向它传递一个强制参数,它是另一个程序的名称,在它之前有两个可能的选项(假设一个称为 -v,第二个称为 -a,它们的功能并不重要) .我需要做的是为第二个程序提供额外的选项。这些是程序在终端中的可能执行:
./program -a 测试
./program -v 测试
./program -v -a 测试
./程序测试
但我也想运行这个:
./program [上面的任何选项] required_argument [参数启动选项]
直接例子:
./program -v -a second_program -g -foo
有没有办法以某种方式区分最后两个选项作为 second_program 的选项?我试过使用 optind,但不幸的是只有“second_program”被识别。目前我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
int main(int argc,char **argv)
{
int vflag = 0;
int aflag = 0;
int c;
while ((c = getopt(argc,argv,"va:")) != -1)
switch(c)
{
case 'v':
vflag = 1;
break;
case 'a':
aflag = 1;
break;
default:
break;
}
if(argv[optind] == NULL) {
printf("Missing mandatory argument\n");
return -1;
}
for (int i = optind; i < argc; i++)
printf("Non-option argument %s\n",argv[i]);
return 0;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)