数组问题

[复制链接]
1373|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};

的确是需要初始化,很容易犯得错误
baidudz 发表于 2012-12-24 23:19 | 显示全部楼层
基本的C++错误
pkat 发表于 2012-12-24 23:32 | 显示全部楼层
定义数组一定要初始化,否则会有一些莫名其妙的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

2603

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部