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

时间:2019-01-31 04:50:41

标签: c command-line-arguments

我必须编写一个加密/解密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

我不确定该如何检查,任何信息都可以帮助您!谢谢!

1 个答案:

答案 0 :(得分:1)

如果您不想使用其他库,而是希望自己处理所有内容,则需要运行循环以处理所需的参数。

通常,如果您确定某个值将在参数后出现,则可以执行以下操作:

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回答还不错:)