C 创建基于基本命令行参数的计算器时遇到问题

C 创建基于基本命令行参数的计算器时遇到问题,c,C,我正在尝试创建一个简单的计算器,它从用户[1][operator][2]那里接收3个参数。运算符表示要进行的计算(+、-、x、/)。我决定给操作员用一个开关盒。然而,我似乎无法让我的代码工作。它看起来很简单,但是输出总是默认的开关情况 谢谢你的帮助 #include <stdio.h> int main(int argc, char *argv[]) { int a,b,sol; char op; if ( argc != 4) { pri

我正在尝试创建一个简单的计算器,它从用户[1][operator][2]那里接收3个参数。运算符表示要进行的计算(+、-、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; 
}
#包括
int main(int argc,char*argv[]){
INTA,b,sol;
char op;
如果(argc!=4){
printf(“用法:calc[operator_1][operator][operator_2]\n”);
打破
} 
a=atoi(argv[1]);
b=atoi(argv[3]);
op=argv[2];
开关(op)
{
格“+”:
sol=a+b;
printf(“%i\n”,sol);
打破
案例'-':
sol=a-b;
printf(“%i\n”,sol);
打破
案例“x”:
sol=a*b;
printf(“%i\n”,sol);
打破
案例“/”:
sol=a/b;
printf(“%i\n”,sol);
打破
违约:
printf(“无效运算符\n”);
}
返回0;
}

argv[2]
是一个字符串,但在交换机中,您可以将其与字符进行比较

改为这样做:

if(strcmp(op,"+") == 0)
   sol=a+b;

// etc
printf("%i\n",sol);
或者:

  op = *argv[2]; // get first char

  // rest of your code

我认为
op
应该是
char*
类型,而不是
char