我有一个简单的命令提示程序(例如,“a 1 + 2”打印3),除了我尝试之外,它完美地工作,乘法符号(*)似乎无法从命令行正确地编程。
这些函数就是这样投射的
void math(int argc, char **argv) {
int result;
int first = atoi(argv[1]);
int second = atoi(argv[3]);
if(*argv[2] == '+') {
addition(first,second);
}
else if(*argv[2] == '-') {
subtraction(first,second);
}
else if(*argv[2] == '*') {
multiplication(first,second);
}
else{
printf("Syntax error \n");
}
并按原样执行
addition (int first, int second){
printf("%d",first + second);
}
subtraction (int first, int second) {
printf("%d",first - second);
}
multiplication (int first, int second) {
printf("%d",first * second);
}
通过测试,例如将添加功能中的'+'符号切换为'*',只是为了检查我是否做了一些笨拙的错误,但似乎并非如此。使用*符号尝试用户输入会导致程序跳到我的“语法错误”else子句。
答案 0 :(得分:5)
您的shell(或命令提示符)已执行globbing,在您执行程序时使用\
转义(带引号或{{1}})。
答案 1 :(得分:2)
因为命令shell正在解释“*”。您需要将其放在引号中以将其传递给您的程序,例如:
> math 2 "*" 3