以下は、を使用してオプションを使用する私のコード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);
}
}
}