我試圖創建一個解算不同長度(例如2 + 3/4或7 * 8/2 + 12-14)的算術表達式的計算器,並且我想知道是否可以在不使用的字符串。不使用字符串的可變長度算術計算器?
我發現無數的教程解釋瞭如何使一個簡單的計算器只有兩個數字和一個運算符,我還發現了使用sscanf和字符串來獲取輸入的示例。
但是,我的問題是:有沒有一種方法(甚至有可能)獲得可變長度輸入而不使用字符串?
起初,我以爲我可以簡單地添加更多的說明符:
int num1 , num2, num3;
char op1, op2;
printf("Please enter your equation to evaluate: ");
scanf("%d%c%d%c%d", &num1, &op1, &num2, &op2, &num3);
但顯然,這並不對方程比3號或小於3號工作更長的時間。 我也在考慮使用某種遞歸函數,但我不確定如果我需要事先詢問整個等式,我該怎麼做?
您可以嘗試使用自己的解析器並使用http://en.wikipedia.org/wiki/Reverse_Polish_notation – Alexis
一次只能讀取一個字符。 – jxh
但是,如果不使用字符串,那麼可以將每個標記存儲爲'char',但是,您需要一個下降解析器。最好將表達式轉換爲拋光表示法,然後使用堆棧結構構建表達式樹。 – nullpotent