无法创建基于命令行参数的计算器

时间:2012-12-01 18:52:46

标签: c

我试图创建一个简单的计算器,它接收来自用户的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; 
}

1 个答案:

答案 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