getopt仅读取第一个命令

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

我对getopt函数的行为有疑问。我的代码如下:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {
    int opt;

     while((opt = getopt(argc, argv, "gi:o:ctp")) != -1) {
         switch(opt) {
            case 'i':
                   printf("entered i\n" );
                   break;

            case 'o':
                   printf("entered o\n" );
                   break;
         }
     }
     return 0;
}

但是,当我输入./run -i in -o out时,它仅打印出entered i并停止。有人可以帮我吗?

c c99 getopt
1个回答
2
投票

[您需要将另一个参数传递给-i-o,因为冒号在optstring中的字母后面。

喜欢这个:

./run -i in -o out

或者,您可以通过在optstring中添加其他冒号来使参数的参数成为可选参数。

     while((opt = getopt(argc, argv, "gi::o::ctp")) != -1) {
© www.soinside.com 2019 - 2024. All rights reserved.