在C中定义自定义命令行参数?
问题描述:
我需要从终端传递'key'作为参数。它应该如下运行:./a.out -k100101001
其中10011001是关键,-k
是用于指定它的标志。
如果我需要传递一个文件名以及密钥,它应该运行如下:./a.out -k10011001 -iparameter.txt
其中parameter.txt是文件名,-i是指定该文件的标志。
注意:我有几个参数传递和参数值后面没有空格的标志(-iparameter.txt)后面,加上我不知道标志的顺序,所以做这样的事情没有帮助。在C中定义自定义命令行参数?
int main(int argc, char **argv) {
if (argc == 2) {
if (!strcmp(argv[1], "-k")) something();
if (!strcmp(argv[1], "-i")) something();
}
对C的任何建议?我使用Ubuntu来运行我的程序。 谢谢。
答
通过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;
}
}
}
}
+0
这种ad hoc参数解析循环导致临时命令行语法。使用'getopt()'(或'getopt_long()')或等价的解析参数会更好。 – 2015-02-08 22:10:31
试试'man 3 getopt'。 – user3386109 2015-02-08 21:47:50