C で後置式を評価するプログラムを書こうとしています. これは私が書いたプログラムです. しかし, スタックアンダーフローエラーが発生するようです.
int evaluate(char a[]){
int i = 0, opr1, opr2, res;
int eval;
struct stack infix_stack;
init(&infix_stack); //Initialize stack top to -1.
for(i = 0; (eval=a[i])!='\0'; i++){
if(isdigit(eval)){
push((eval-'0'), &infix_stack);
showStack(&infix_stack);
}
else{
opr2 = pop(&infix_stack);
opr1 = pop(&infix_stack);
switch (a)
{
case '+':return(b+c);break;
case '-':return(b-c);break;
case '*':return(b*c);break;
case '/':return(b/c);break;
default:
printf("Unknown operator\n");
return 0;
break;
}
}
}
return(res = pop(&infix_stack));
}
スタック アンダーフロー エラーが発生します。