c有没有什么方法把比如"25*10+1"的字符串计算出来?

2019-12-22 13:44发布

现在解释器有这个功能,但是我是用C工程开发,需要这个字符串计算机功能
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
关于以后
1楼-- · 2019-12-24 17:38
递归的方法发一波。
之前一直在用的。


  1. /**
  2.   * @brief  Four arithmetic operation.
  3.   * @param  *s: Expression start.
  4.   * @param  *e: Expression end
  5.   * @retval ret
  6.   */
  7. int calc(const char *s, const char *e)
  8. {
  9.     int layer = 0;
  10.     const char *p;

  11.     for (p = e; p >= s; --p) {
  12.         switch (*p) {
  13.         case ')': ++layer; break;
  14.         case '(': --layer; break;
  15.         case '+':
  16.             if (0 == layer) return calc(s, p - 1) + calc(p + 1, e);
  17.             break;
  18.         case '-':
  19.             if (0 == layer) return calc(s, p - 1) - calc(p + 1, e);
  20.             break;
  21.         }
  22.     }

  23.     for (p = e; p >= s; --p) {
  24.         switch (*p) {
  25.         case ')': ++layer; break;
  26.         case '(': --layer; break;
  27.         case '*':
  28.             if (0 == layer) return calc(s, p - 1) * calc(p + 1, e);
  29.             break;

  30.         case '/':
  31.             if (0 == layer) return calc(s, p - 1) / calc(p + 1, e);
  32.             break;
  33.         }
  34.     }
  35.      
  36.     if ('(' == *s && ')' == *e) return calc(s + 1, e - 1);
  37.     return atoi(s);
  38. }
复制代码

一周热门 更多>