如何将“ *”参数传递给main()?

时间:2018-10-12 15:28:57

标签: c shell

我编写了一个程序,该程序可以从命令行接受参数,这些参数应该是一个数字,一个运算符(长度为1)和另一个数字:

int main(int argc , char *argv[]){
    if (argc < 4){
        printf("Too few arguments (4 required)");
        return -1;
    }

    char *a = argv[1];
    char b = *argv[2];
    char *c = argv[3];

    printf("%s %c %s = ...", a, b, c);
    return 0;
}

似乎可以正常工作,例如当我通过110 + 11时得到:

110 + 11 = ...

但是,如果我通过运算符*传递某些内容,例如110 * 11,则会搞砸:

110 b c_nums.cbp = ...

似乎唯一可行的方法是将*替换为^*'*',然后将char b = *argv[2];更改为char b = *(argv[2]+1);

我假设这与cmd或任何格式的命令有关,但是如何在不总是通过^<op>而不是<op>的情况下解决此问题?

编辑:好的,看来"*"在cmd中有效,但不是代码::出于某种原因阻塞。

1 个答案:

答案 0 :(得分:1)

*字符对外壳具有特殊含义。甚至在您的程序执行之前便会对其进行解释。

您需要将*从外壳中逸出,以便程序可以看到它,方法是在其前面加上反斜杠或将其用引号引起来。