我的论点是这样的
./a.out -i file1 file2 file3
我该如何利用getopt()
获取 3 个(或更多)输入文件?
我正在做这样的事情:
while ((opt = getopt(argc, argv, "i:xyz.."))!= -1){
case 'i':
input = optarg;
break;
...
}
我只得到file1
;如何获得file2
, file3
?
我知道这已经很老了,但我在寻找解决方案时遇到了这个。
while((command = getopt(argc, argv, "a:")) != -1){
switch(command){
case 'a':
(...)
optind--;
for( ;optind < argc && *argv[optind] != '-'; optind++){
DoSomething( argv[optind] );
}
break;
}
我找到内部选择(外部使用getopt()) 指向“当前位置”之后的下一个位置argv' 选择者getopt();
这就是为什么我一开始就减少它。
首先for loop检查当前参数的值是否在以下范围内argv (argc是数组的长度,因此数组 argv 中的最后一个位置是argc-1)。
第二部分&&比较下一个参数的第一个字符是否为“-”。如果第一个字符是“-”,那么我们就用完了当前参数的下一个值,否则 argv[optind] 就是我们的下一个值。依此类推,直到 argv 结束或参数用完值。
最后增量optind检查下一个 argv。
请注意,因为我们正在检查 'optind ' 除非第一部分为真,否则条件的第一第二部分将不会被执行,因此不必担心读取数组边界之外的内容。
PS 我是一个相当新的 C 程序员,如果有人有改进或批评,请分享。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)