Estoy tratando de resolver un ejercicio K & R (5.10) que utiliza los argumentos argc y argv.Se supone que es una calculadora de notación polaca que utiliza argumentos de línea de comandos como su 'entrada. Bien, el programa funciona bien para los operadores '+' y '-' pero obtengo errores para '*'. Descubrí que tiene algo que ver específicamente con el símbolo '*', porque si lo reemplazo con otra cosa, el programa funciona. ¿Alguna idea? Gracias.
Nota: No incluí las funciones stack_in, stack_out y print_stack. Creo que son buenas.argv y calculadora de notación polaca
#include <stdio.h>
#define MAXST 10
#define NUMBER '1'
void stack_in(int n);
int stack_out(void);
void print_stack(void);
int main(int argc,char **argv)
{
char c,k;
while(--argc>0 && ++argv)
while(c=*(*argv)++){
if(c>='0' && c<='9')
k=NUMBER;
else
k=c;
switch (k){
int g1,g2;
case NUMBER:stack_in(c-'0');
break;
case '+':g1=stack_out();
g2=stack_out();
stack_in(g1+g2);
break;
case '-':g1=stack_out();
g2=stack_out();
stack_in(g2-g1);
break;
case '*':g1=stack_out();
g2=stack_out();
stack_in(g1*g2);
break;
default:printf("error on switch \n");
break;
}
}
print_stack();
return 0;
}
El '*' se está expandiendo por su caparazón. –
¡Oh, no lo habría adivinado en mil años! ¡Gracias a todos! – kaiseroskilo