利用链栈实现逆波兰计算器中的部分代码

while( isdigit(c) || c=='.' )  // 用于过滤数字
        {
            str[i++] = c;
            str[i] = '\0'; 
            if( i >= 10 )
            {
                printf("出错:输入的单个数据过大!\n");
                return -1;
            }
            scanf("%c", &c);//再输入一个字符
            if( c == ' ' ) 
            {
                d = atof(str);
                Push(&s, d);
                i = 0;
                break;
            }
        }

视频中讲到注释掉 str[i] = '\0 '会出错,但是我在geany编译器中注释掉这句之后依旧能成功运行。
另外,B站视频弹幕谈到‘空格’是如何进入到进入到while循环的,大概是没有注意到在while循环中scanf("%c", &c);这句代码是在已经获取到一个数字或小数点的情况下,再获取一个新的字符,之后再对这个字符判断是不是空格

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐