在C中定义自定义命令行参数?

时间:2015-02-08 21:44:45

标签: c terminal command-line-arguments

我需要传递一个'密钥'作为终端的参数。它应该作为 ./a.out -k100101001
运行 其中10011001是键,-k是指定它的标志 如果我需要传递一个文件名和密钥,它应该以 ./a.out -k10011001 -iparameter.txt
的形式运行,其中parameter.txt是文件名,-i是要指定的标志那。

注意:我有几个参数要传递,参数值跟在没有空格的标志后面(-iparameter.txt),加上我不知道订单旗帜所以做这样的事情不会有帮助。

int main(int argc, char **argv) {
if (argc == 2) {
    if (!strcmp(argv[1], "-k")) something();
    if (!strcmp(argv[1], "-i")) something();
}

对C的任何建议?我正在使用Ubuntu来运行我的程序。 感谢。

1 个答案:

答案 0 :(得分:2)

使用argv循环应该这样做。

int main(int argc, char *argv[])
{
    int numArg;

    for (numArg = 1; numArg < argc; numArg++)
    {
        if (argv[numArg][0] == '-')
        {
            switch (argv[numArg][1])
            {
            case 'k' : somethingAboutKey(argv[numArg] + 2); // The parameter's value is passed directly to the function
                       break;
            case 'i' : somethingAboutFile(argv[numArg] + 2);
                       break;
            }
        }
    }
}