看这段代码:-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]){
char ch;
int value;
while((ch = getopt(argc, argv, "n: o"))!=EOF){
switch(ch){
case 'n':
value = atoi(optarg);
fprintf(stdout,"\nParameter n");
//Do something
break;
case 'o':
fprintf(stdout,"\nParameter 0");
//Do something
break;
default:
fprintf(stdout,"\nInvalid!");
}
argc -= optind;
argv += optind;
}
}
当我传递以下参数时
./program -n 123 -o
我得到这个结果
Parameter n
我希望得到这个]
Parameter n Parameter o
为什么getopt()在循环的第二次迭代中不返回下一个参数?
更新
所以代码应该像这样:-
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]){
char ch;
int value;
while((ch = getopt(argc, argv, "n:o"))!=-1){
switch(ch){
case 'n':
value = atoi(optarg);
fprintf(stdout,"Parameter n (%d)\n", value);
//Do something
break;
case 'o':
fprintf(stdout,"Parameter o\n");
//Do something
break;
default:
fprintf(stdout,"Invalid!\n");
break;
}
}
}
看一下这段代码:-#include