在c中获得与数字相当的字符

时间:2011-11-19 14:26:54

标签: c

我有一个字符串:

((12+41)*30)

此处124130都是字符。我如何对它们进行算术运算?

当我有一个数字20时,我怎么能得到一个读数为20的字符串?

3 个答案:

答案 0 :(得分:2)

关于第一个问题,请阅读reverse polish notation。要将int转换为字符串,请使用sprintf()。

char *string[256];
int n = 100;
sprintf(string, "%d", n); 

答案 1 :(得分:2)

关于第一个问题,如果要正确执行此操作,则需要为所需的表达式生成解析器。阅读bison - 实际上section 2.2 of the manual是关于为你在这里提供的表达式编写解析器。

以这种方式获得解析器正在做得很好,虽然我不会声称它特别容易(了解野牛有点令人费解,第一次)。可以手动将解析器组合在一起,但最终需要更长的时间,而不是一点点教育。一旦你知道如何使用像野牛这样的工具,你就可以在各种各样的地方重用这些知识。

答案 2 :(得分:2)

为了计算这样的表达式,你需要创建一个12,+,41,30的树

                  *
                /   \
             [+]    30
            /   \
          12     41

这可以通过将中缀表达式转换为后缀表达式来完成,这样可以设置正确的运算符优先级。然后使用堆栈遍历树来评估表达式。