我试图使用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]
答案 0 :(得分:1)
从getopt(3)
手册页:
如果
optstring
的第一个字符是'-'
,那么每个非选项argv
- 元素都会被处理,就像它是带有字符代码1
的选项的参数一样。
这意味着两个号码将从getopt
返回1
。您需要跟踪自己拥有的选项。