2012-12-01 77 views
3

我試圖創建一個簡單的計算器,它接收來自用戶[數字1] [運算符] [數字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; 
} 
+0

我想'op'應該是一個類型'字符*的','不char'。 – Aziz

回答

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