使用getopt来解析命令行参数

时间:2015-01-25 19:49:10

标签: c getopt

我试图使用getopt来解析我的命令行参数,但是我遇到了一个问题,就是设置了错误值,跳过案例1并将案例2设置为案例1.这里是只是案件的循环。标志工作得很好,只是按位置读取问题。

while ((c = getopt (argc, argv, "-l:u:eo")) != -1)
         switch (c)
           {
           case 1:
            printf("here\n");
             lower = atoi(optarg);
             break;
           case 2:
             upper = atoi(optarg);
             break;
    }

这是运行程序后终端的输出。

(%) fibon 12 22
here
here
lower = 22, upper = 0, even = 0, odd = 0
Usage: fibon[[lower upper] | [-l lower -u upper]] [-e|-o]

1 个答案:

答案 0 :(得分:1)

getopt(3)手册页:

  

如果optstring的第一个字符是'-',那么每个非选项argv - 元素都会被处理,就像它是带有字符代码1的选项的参数一样。

这意味着两个号码将从getopt返回1。您需要跟踪自己拥有的选项。