gpt4 book ai didi

c - 同一类型的多个命令行参数

转载 作者:行者123 更新时间:2023-11-30 15:44:07 24 4
gpt4 key购买 nike

我对如何处理同类的多个命令行参数感到困惑。我在网上看到了一些解决方案,但它们没有显示我正在寻找的内容:

我的命令行参数将是:myar -q test.a 1-s.txt 2-s.txt 3-s.txt 4-s.txt 5-s.txt

因此,所有这些文件名都需要作为 q 输入进行处理。但是,当我尝试这样做时,仅采用第一个。我已经尝试过以下方法,但它只选择 test.a:

opt =  getopt(argc, argv, optString);
while (opt != -1) {
switch (opt) {

case 'q':
globalArgs.filename = optarg;
break;

有没有办法做得更好?我现在真的很困惑。

最佳答案

您有多种选择:

  • 您的示例调用有一个 -q 选项,后跟多个文件名(非选项)参数。您使用 q 而不是 q: 作为 getopt() 选项字符串的一部分,并将文件名作为非选项参数进行处理。

  • 您要求用户在每个文件名前面重复 -q(因此 myar -q test.a -q 1-s.txt -q 2-s .txt -q 3-s.txt -q 4-s.txt -q 5-s.txt )。在选项解析循环中,您可以在遇到 optarg 时对其进行处理,或者将值存储在某种列表中以便稍后处理。

  • 您使用 getsubopt() 并要求用户用逗号分隔符列出参数 (myar -q test.a,1-s.txt,2-s.txt ,3-s.txt,4-s.txt,5-s.txt)。

最常见的技术,也是可能适合存档程序的技术(从命令名称 myar 推断)是第一种:文件名只是非选项参数。

许多程序都使用第二种技术。考虑将 cc-l-I-L 选项结合使用。或者使用 -f 进行 make(它指定要扫描的另一个 makefile — 是的,您可以在一次调用中使用多个 -f 选项)。

第三种技术对于文件名以外的东西更有可能有用;文件名包含逗号的风险太大。 sort 实际上不太可能使用 getsubopt(),但其 -k2n,2 表示法类似。

关于c - 同一类型的多个命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com