如何让用户以任意顺序输入命令行参数?

How to let a user enter command line arguments in any order?

我必须编写一个 encrypt/decrypt C 程序并开始它需要 6 个 CL 参数。这对我来说通常没问题,但这次参数顺序无关紧要。标志也始终与参数类型匹配。例如。 -t 将始终在 csv 文件之前。

例如,以下都是 运行 程序的等效方法,并且会产生相同的行为:

./encrypt -t mappingfile.csv -m 1 -i words.txt
./encrypt -m 2 -i words.txt -t mappingfile.csv
./encrypt -m 1 -i words_to_encrypt.txt -t mappingfile.csv

我不确定如何检查这个,任何信息都有帮助!谢谢!

如果您不想使用其他库而宁愿自己处理所有事情,您会想要 运行 一个循环来处理所需的参数。

通常,如果您确定一个值会出现在一个参数之后,您可以这样做:

for( int i; i < argc; i++ ){
    if( [ argument is equal to some tag ] ){
        [ handle argument at args[i+1] ]
        i++; // Skip the next arg
    } else if ( [ argument is equal to next tag ] ) {

    } // Use for any additional tags you need
}

您可以在处理参数之前添加检查以确保 i+1 不会通过 args 数组的边界。要检查参数是否相等,您可以使用 <string.h> 函数 strcmp() 或编写您自己的函数。

处理参数可以像将字符串复制到其他 char[] 数组一样简单,甚至可以记住所需参数的索引。这完全取决于你想如何使用它。

像这样遍历标签意味着您不需要它们按任何特定顺序排列。

--- 希望我的第一个 SA 回答还不错 :)