我正在开发通过GUI操作的软件,我的任务是编写函数以使其通过Windows命令行运行,我不知道如何通过int argc
和{{1 }}。请有人请给我一个小例子。我是C的新手,所以这有点过头了。
它应该类似于“参数A”调用“功能1”,然后下一个参数可以是“参数B”,它调用“功能2”或“参数C”,调用“功能3”。
Parameter_1(Paramter_2 | Parameter_3)
答案 0 :(得分:0)
要回答您的第一个问题,我建议您创建两个不同的应用程序,一个用于命令行,另一个用于GUI。两者之间的唯一区别是,一个是使用处理命令行输入的代码构建的,另一个是使用GUI接口的代码。这两个代码具有接口不可知的其余代码,这意味着无论接口如何,它都可以工作。
对于第二个问题,有很多教程用于命令行解析,like this one我花了十秒钟才找到。
答案 1 :(得分:0)
您需要遍历传递给main()
的参数,并根据您找到的任何匹配调用函数。基本main()
函数如下所示
int main(int argc, char *argv[])
{
return 0;
}
argc
是参数的数量,argv
是包含单个参数的C样式字符串的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;
}