我编写了一个程序,该程序可以从命令行接受参数,这些参数应该是一个数字,一个运算符(长度为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中有效,但不是代码::出于某种原因阻塞。
答案 0 :(得分:1)
*
字符对外壳具有特殊含义。甚至在您的程序执行之前便会对其进行解释。
您需要将*
从外壳中逸出,以便程序可以看到它,方法是在其前面加上反斜杠或将其用引号引起来。