我的问题是基于前一个问题的询问çoptget有多个值是如何工作的:C getopt multiple value比方追查
就我而言,我只有一个参数-i
,这是可选的。用户必须使用此语法:
/a.out -i file1 -i file2 -i file3
如果用户不提供-i
标志,程序运行正常。用户可以提供无限数量的文件作为可选参数,例如,
/a.out -i file1 -i file2 -i file3 -i file4 -i file5 ...
我这个getopt()
开始while语句在main()
:
char *input; // ?? Now syntactically correct, but uninitialized?
while ((opt = getopt(argc, argv, "i:"))!= -1){
case 'i':
if (optarg == NULL){
input = NULL;
}
else{
strcpy(input, optarg);
break;
...
}
然后我会通过这些可选参数的函数:
function1(char *required_arg, ...)
在上述的情况下,将是:
function1(required_arg, file1, file2, file3, file4, file5)
目前,我将input
定义为“文件”。我的问题是,如何跟踪任意数量的可选参数以便稍后传入函数?上面的代码是错误的,因为我正在为每个-i
参数传递重新定义input
。
用什么数据结构?
你可以传递参数数组(您可以将它们存储在一个阵列) – coderredoc
@coderredoc我将如何计算的,通过'传递的参数长度i'?也就是说,在上面有5个文件 – ShanZhengYang
如果我错了,纠正我 - 你想从选项'-i file1 -i file2'中得到你得到的文件的名字,然后你想把它们传递给其他方法。现在你的问题是你如何将它们传递给其他方法? – coderredoc