下面是我做的一个计算器程序的一部分。
Get_str为输入的表达式数组,当它为数字或小数点的时候赋给局部数组tmp,再用sscanf赋给operand,并压入栈OPND。
但输入13+3的时候发现栈里面的内容为13和33.。。求解
while(Get_str[pcur]!='\0')
{
if(Get_str[pcur]==' '||Get_str[pcur]=='\n'){
pcur++;}
else if(isdigit(Get_str[pcur])||Get_str[pcur]=='.')
{
char tmp[N];
while(isdigit(Get_str[pcur])||Get_str[pcur]=='.')
tmp[cnt++]=Get_str[pcur++];
if(cnt) {
sscanf(tmp,"%lf",&operand);
OPND.push(operand);
cout<<"top:"<<OPND.top()<<endl;
cnt=0;
operand=0.0;}
} |