以下是我使用选项的代码getopt()
。现在,我想为我使用的单个选项提供多个参数atoi(atgv[i])
,其中 i= 2,3,4,..... 我的代码显然适用于以下命令行:./a.out -m 7 3 -f 1 4 5 -M 3 6 5 1
但显然不适用于./a.out -f 1 4 5
or./a.out -M 3 6 5 1
或./a.out -f 1 4 5 -M 3 6 5 1
或./a.out -m 7 3 -M 3 6 5 1
。我尝试使用optarg()
,但它只接受给定选项的单个参数。那么,如何为单个选项提供多个参数?我不需要使用getopt()
. 我的代码是:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv)
{
int opt;
int a,b,c,d,e,f,g,h,i,j,k,x;
while ((opt = getopt(argc, argv, "mfM:")) != -1) {
switch (opt) {
case 'm':
a= atoi(argv[2]);
b= atoi(argv[3]);
c=a+b;
printf("The sum is: %d\n",c);
break;
case 'f':
d= atoi(argv[5]);
e= atoi(argv[6]);
x=atoi(argv[7]);
f=d+e+x;
printf("The sum is: %d\n",f);
break;
case 'M':
g= atoi(argv[9]);
h= atoi(argv[10]);
i=atoi(argv[11]);
j=atoi(argv[12]);
k=g+h+i+j+k;
printf("The add is: %d\n",k);
break;
default: //default case
fprintf(stderr, "Usage: %s [-f or -m or -M] filename\n", argv[0]);
exit(EXIT_FAILURE);
}
}
}