getopt()不返回下一个参数

问题描述 投票:0回答:1

看这段代码:-

#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 #include #include int main(int argc,char * argv []){char ch;整数值while((ch = getopt(argc,...

c getopt
1个回答
2
投票

主要问题

© www.soinside.com 2019 - 2024. All rights reserved.