2012-12-01 2 views
3

사용자가 [Number 1] [operator] [Number 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 *의'이 아닌'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 
관련 문제