首页 > 解决方案 > 是否有任何 C 函数可以评估标准库中定义的字符串表达式?

问题描述

我正在寻找一个可以将字符串表达式评估为整数的函数,例如 fe:

10/2+4*3-(12+5); //Equals 0

进入一个int值为的类型的对象0

复杂操作的功能会更好,即使这不是小时的需要:

2^(1/2)-99

标准 C 库(C89、C90,如果已编译)中是否定义了任何此类定义?

有没有具有这种功能的非标准库?

表达式支持的字符越多越好。

但即使是像 +,-,*,/,() 这样的基本操作也可以。

标签: cstringtype-conversionintegerexpression

解决方案


标准 C 库(C89、C90,如果已编译)中是否定义了任何此类定义?

不,甚至在最新的 C11 或 C18 标准库中也没有。

有没有具有这种功能的非标准库?

我也找不到。你必须编写自己的函数来完成它。

也许在第一步扫描字符串并将其中的每个值存储到一个单独的字符串中。

正如我在评论中已经建议的那样,strtol用于将11字符串中的整数值转换为 type 的值int。您可能需要使用它。在库中还有一个atoi将字符串中的整数值转换为 an的函数,int但此函数更容易出错,不应使用。

算术运算符也应存储在单独的字符串中,但稍后由自制例程进行评估。

但是可以在此处找到很好的示例和建议,其中向用户询问了类似(如果不相同)的问题:

C:将数学表达式字符串转换为带有结果的int


推荐阅读