我的C程序无法检测乘法符号

时间:2015-12-07 22:14:34

标签: c

我有一个简单的命令提示程序(例如,“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子句。

2 个答案:

答案 0 :(得分:5)

您的shell(或命令提示符)已执行globbing,在您执行程序时使用\转义(带引号或{{1}})。

答案 1 :(得分:2)

因为命令shell正在解释“*”。您需要将其放在引号中以将其传递给您的程序,例如:

 > math 2 "*" 3