利用鏈棧實現逆波蘭計算器中的部分代碼
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);
這句代碼是在已經獲取到一個數字或小數點的情況下,再獲取一個新的字符,之後再對這個字符判斷是不是空格