我正在编写一个需要能够解析命令行参数的程序,我想使用 getopt。让它与常规参数一起使用没有问题,但是我需要它能够获取未使用标志指定的参数。例如,如果我运行:./prog -a a1 -b b2 foo
我需要能够获得 a1、a2 和 foo。现在它处理除了未指定的参数之外的所有内容。这是我所拥有的:
while((command = getopt(argc, argv, "a:b:c:")) != -1){
switch(command){
case('a'):
input = fopen(optarg, "r");
if(input == NULL){
printf("Error opening file, exiting\n");
exit( -1 );
}
break;
case('b'):
output = fopen(optarg, "r");
if(output == NULL){
printf("Error opening file, exiting\n");
exit( -1 );
}
break;
case('c'):
keyword = optarg;
break;
case('?'):
if((optopt == 'a') || (optopt == 'b') || (optopt == 'c')){
fprintf(stderr, "Error, no argument specified for -%c\n", optopt);
exit( -1 );
} else
extra = optarg; // This is how I thought I needed to do it
break;
default:
fprintf(stderr,"Error in getopt");
break;
}// switch
} // while
谢谢!