我试图创建一个简单的计算器,它接收来自用户的3个参数,[Number 1] [operator] [Number 2]。运算符表示要完成的计算(+, - ,x,/)。我决定为操作员使用开关盒。但是,我似乎无法让我的代码工作。看起来很简单,但输出始终是默认的开关情况。
感谢您的帮助。
#include <stdio.h>
int main(int argc, char *argv[]) {
int a,b,sol;
char op;
if ( argc != 4) {
printf("Usage: calc [operand_1] [operator] [operand_2]\n");
break;
}
a = atoi(argv[1]);
b = atoi(argv[3]);
op = argv[2];
switch (op)
{
case '+':
sol=a+b;
printf("%i\n",sol);
break;
case '-':
sol=a-b;
printf("%i\n",sol);
break;
case 'x':
sol=a*b;
printf("%i\n",sol);
break;
case '/':
sol=a/b;
printf("%i\n",sol);
break;
default:
printf("Invalid Operator \n");
}
return 0;
}
答案 0 :(得分:3)
argv[2]
是一个字符串,但在您的开关中,您将与一个字符进行比较。
请改为:
if(strcmp(op,"+") == 0)
sol=a+b;
// etc
printf("%i\n",sol);
或者:
op = *argv[2]; // get first char
// rest of your code