我试图创建一个解算不同长度(例如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