打印

数组问题

[复制链接]
942|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xsgy123|  楼主 | 2012-12-23 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ge, pc, ST, AN, tmp
下面是我做的一个计算器程序的一部分。
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;}
                }

相关帖子

沙发
火箭球迷| | 2012-12-23 09:45 | 只看该作者
改一下:
char tmp[N]={0};

使用特权

评论回复
板凳
dfsa| | 2012-12-23 09:52 | 只看该作者
每次统计完一个数之后,数组记得清0

使用特权

评论回复
地板
无冕之王| | 2012-12-23 10:05 | 只看该作者
火箭球迷 发表于 2012-12-23 09:45
改一下:
char tmp[N]={0};

的确是需要初始化,很容易犯得错误

使用特权

评论回复
5
baidudz| | 2012-12-24 23:19 | 只看该作者
基本的C++错误

使用特权

评论回复
6
pkat| | 2012-12-24 23:32 | 只看该作者
定义数组一定要初始化,否则会有一些莫名其妙的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝