Boas
no codigo em anexo (em c) quando eu faço "calcula 2 + 2" ele identifica me o *argv[2] como o char '+' o mesmo acontece com os chars '-' e '/' . o problema esta quando eu faço por exemplo "calcula 2 * 2" em que me devolve o *argv[2] como o char 'E'.
alguem me sabe explicar porque?
codigo:
obrigado
no codigo em anexo (em c) quando eu faço "calcula 2 + 2" ele identifica me o *argv[2] como o char '+' o mesmo acontece com os chars '-' e '/' . o problema esta quando eu faço por exemplo "calcula 2 * 2" em que me devolve o *argv[2] como o char 'E'.
alguem me sabe explicar porque?
codigo:
Código:
#include <stdio.h>
int atoi(char s[]); /*converte uma string para um inteiro*/
double calcular (char *calc[]);
int main(int argc, char *argv[]) {
double res=0;
printf("%c",*argv[2]);
res = calcular(argv);
printf ("%.2f",res);
return 0;
}
double calcular (char *calc[]){
double op1=0, op2=0, res=0;
char operacao ;
op1 = atoi(calc[1]);
op2 = atoi(calc[3]);
operacao = *calc[2];
switch (operacao){
case '+':
res = op1 + op2;
break;
case '-':
res = op1 - op2;
break;
case '*':
res = op1 * op2;
break;
case '/':
res = op1 / op2;
break;
}
return res;
}
/*atoi: converte uma string para um inteiro*/
int atoi(char s[]){
int i=0, n, sign;
sign = (s[i] == '-') ? -1 : 1;
if (s[i] == '+' || s[i] == '-') /**salta o sinal*/
i++;
for(n = 0; s[i] >= '0' && s[i] <= '9'; ++i)
n = 10 * n +(s[i] - '0');
return sign * n;
}
obrigado