利用链栈实现逆波兰计算器中的部分代码
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);
这句代码是在已经获取到一个数字或小数点的情况下,再获取一个新的字符,之后再对这个字符判断是不是空格