-1

我正在开发通过 GUI 运行的软件,我的任务是编写函数以使其通过 Windows 命令行运行,我不知道如何通过int argcchar** argv. 有人可以给我一个小例子。我是 C 的新手,所以这有点过头了。

它应该类似于“参数 A”调用“函数 1”然后下一个参数可以是调用“函数 2”的“参数 B”或调用“函数 3”的“参数 C”。

参数_1(参数_2 | 参数_3)

4

2 回答 2

0

要回答您的第一个问题,我建议创建两个不同的应用程序,一个用于命令行,一个用于 GUI。两者之间的唯一区别是,一个是使用处理命令行输入的代码构建的,而另一个将具有使用 GUI 界面的代码。两者将具有与接口无关的其余代码的共同点,这意味着无论接口如何,它都可以工作。

对于第二个问题,有很多关于命令行解析的教程,比如我花了十秒钟才找到的这个。

于 2013-06-27T20:25:42.193 回答
0

您将需要遍历传递给的参数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;
}
于 2013-06-27T20:26:55.977 回答