c中main之外的命令行处理

时间:2016-04-29 00:18:07

标签: c command

我在处理main之外的命令行参数时遇到问题。当用户在命令行输入两个数字时,我的代码应该进行基本的数学运算。

e.g。 “程序名称”-add 1 2 输出:3

main函数中允许的唯一函数是处理命令行参数然后进行基本添加的函数。我试图调用参数时遇到错误。这是我的代码......

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    void process(int args, char *argv[]);  //Used to process arguments from the command line.
    int add(int num1, int num2);
    int main()
    {
         process(args, *argv[]);
         return (0);
    }
    void process(int args, char *argv[])
    {
        int i;
        int num1 = 0;
        int num2 = 0;
        for (int i = 1; i < args; i++)
        {
            if (strcmp(argv[i], "-a") == 0 || strcmp(argv[i], "-add") == 0) // Line to get -a or -add switch to add two numbers.
            {
                 add(num1, num2);  //add function call
                 printf("%d");  // print result
            }
        }
    }
    int add(int num1, num2)
    {
         return num1 + num2;
    }

我得到的错误是args和argv未声明。关于如何使用过程函数完成此任务的任何想法?

1 个答案:

答案 0 :(得分:2)

int main()
{
     process(args, *argv[]);
     return (0);
}

您认为args(按惯例应为argc)和argv来自何处?

另外,为什么在将*传递给[]时,我将argvprocess()包括在内?尝试实际理解您正在编写的代码,而不是仅仅复制/粘贴片段并按摩它们直到编译完成。

main的定义不必包含它们,但您的程序需要它们。所以这样做:

int main(int argc, char *argv[])
{
     process(argc, argv);
     return 0;
}