我正在开发通过 GUI 运行的软件,我的任务是编写函数以使其通过 Windows 命令行运行,我不知道如何通过int argc
和char** argv
. 有人可以给我一个小例子。我是 C 的新手,所以这有点过头了。
它应该类似于“参数 A”调用“函数 1”然后下一个参数可以是调用“函数 2”的“参数 B”或调用“函数 3”的“参数 C”。
参数_1(参数_2 | 参数_3)
我正在开发通过 GUI 运行的软件,我的任务是编写函数以使其通过 Windows 命令行运行,我不知道如何通过int argc
和char** argv
. 有人可以给我一个小例子。我是 C 的新手,所以这有点过头了。
它应该类似于“参数 A”调用“函数 1”然后下一个参数可以是调用“函数 2”的“参数 B”或调用“函数 3”的“参数 C”。
参数_1(参数_2 | 参数_3)
要回答您的第一个问题,我建议创建两个不同的应用程序,一个用于命令行,一个用于 GUI。两者之间的唯一区别是,一个是使用处理命令行输入的代码构建的,而另一个将具有使用 GUI 界面的代码。两者将具有与接口无关的其余代码的共同点,这意味着无论接口如何,它都可以工作。
对于第二个问题,有很多关于命令行解析的教程,比如我花了十秒钟才找到的这个。
您将需要遍历传递给的参数main()
并根据您找到的任何匹配项调用函数。一个基本main()
函数如下所示
int main(int argc, char *argv[])
{
return 0;
}
argc
是参数的数量,是指向包含单个参数的 C 样式字符串argv
的指针数组。char
下面基于 C 的示例应该可以帮助您入门。
(尽管您将问题标记为 C 和 C++,但您只在问题中提及 C,因此这是我为示例选择的语言。)
#include <string.h>
#include <stdio.h>
void execA()
{
// ... do something
}
void execB()
{
// ... do something
}
void execC()
{
// ... do something
}
int main(int argc, char *argv[])
{
for(int i = 1; i < argc; i++)
{
if(0 == _stricmp("paramaterA", argv[i]))
{
execA();
}
else if(0 == _stricmp("paramaterB", argv[i]))
{
execB();
}
else if(0 == _stricmp("paramaterC", argv[i]))
{
execC();
}
else
{
fprintf(stderr, "Unknown parameter: %s", argv[i]);
}
}
return 0;
}