如何在包管理器中处理多个命令行参数?我正在尝试编写一个包管理器,现在接受安装的包给我带来了很多麻烦。例如,用户想要安装包x,y和z。现在我的代码将向函数发送3个不同的请求。我想一次性获得所有包名。因此,例如,用户想要安装包x,y和z,它将被处理,我的代码将向函数发送请求,声明它需要x,y和z,并且该函数将立即开始工作。
这是我目前的实施......
case 'S':
switch (argv[1][2]) {
case 'u':
id = 1;
alfred("system", "update", "", id);
break;
case 'r':
id = 1;
alfred("system", "reload", "", id);
break;
case 'i':
if (argc - 2 != 0) {
// Loop until packages are complete.
packages = 2; // Starting point of packages = argv[2][0]
srand(time(NULL)); // Seed for random number
id = rand(); // Generate random number for id
argc = argc - 2 + 1; // argc minus the number of packages and plus 1
/* This is a very inefficent loop! */
/* Must get all targets and feed it to alfred */
while (packages <= argc) {
alfred("system", "install", &argv[packages][0], id);
packages++;
}
} else {
printf("Unrecognized format. Execute alfred -h for more information.\n");
}
break;
default:
printf("Unrecognized format. Execute alfred -h for more information.\n");
break;
}
break;
答案 0 :(得分:0)
答案 1 :(得分:0)
您也可以尝试libargtable。 我以前用它来解析各种论点,它非常方便。
答案 2 :(得分:0)
我认为你要找的是getopt
文件说
getopt()函数解析命令行参数。它的参数argc和argv是参数count和 在程序调用时传递给main()函数的数组。 argv的一个元素,以' - '开头(并且是 不完全是“ - ”或“ - ”)是一个选项元素。这个元素的字符(除了最初的' - ')是 选项字符。如果重复调用getopt(),它将连续返回每个选项字符 每个选项元素。