我要做一个名为的程序:
>./program [-p] [-h] [-n <number>] <file>
我得到了我的getopt工作,但我需要以某种方式获取文件,我尝试使用optind
,但<file>
可以在任何标志之前给出。
可能的电话是:
>./program bomber.txt
>./program bomber.txt -n 2 -p
>./program -h bomber.txt -n 4
>./program -p -n 3 bomber.txt
答案 0 :(得分:1)
您可以在https://linux.die.net/man/3/getopt
找到getopt
的文档
您问题的实际答案在以下段落中
默认情况下,getopt()会在扫描时置换argv的内容,以便最终所有非选择都在最后。还实现了另外两种模式。如果optstring的第一个字符是&#39; +&#39;或者设置环境变量POSIXLY_CORRECT,然后一旦遇到nonoption参数,选项处理就会停止。如果optstring的第一个字符是&#39; - &#39;,那么每个非选择argv-element都被处理,好像它是带有字符代码1的选项的参数。(这是由编写的程序使用的任意顺序的选项和其他argv元素,关心两者的排序。)特殊论点&#34; - &#34;无论扫描模式如何,强制选项扫描结束。
关键是getopt
置换命令行。完成对选项的解析后,argv[optind]
将引用必需的文件名。
如果命令行中没有文件名,optind
将等于argc
。