【发布时间】:2011-03-31 13:31:52
【问题描述】:
我正在尝试解决一个使用 argc 和 argv 参数的 K&R 练习(5.10)。它应该是一个波兰符号计算器,它使用命令行参数作为它的输入。嗯,程序运行良好+' 和 '-' 运算符,但我得到了 '*' 的错误。我发现它与 '*' 符号特别有关,因为如果我用其他东西替换它,程序可以工作。有什么想法吗?谢谢.
注意:stack_in,stack_out 和 print_stack 这几个函数我没有包含,我认为它们很好。
#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;
}
【问题讨论】:
-
*正在被你的 shell 扩展。 -
一千年后我都猜不到。谢谢大家!
标签: c