我正在寻找一个可以将字符串表达式计算为整数的函数,例如 f.e.:
10/2+4*3-(12+5); //Equals 0
转换为 int
类型的对象,值为 0
。
复杂操作的函数将是更可取的,即使这不是时间的需要:
2^(1/2)-99
标准C库(C89、C90,如果编译的话)有没有定义这样的定义?
有没有非标准库有这样的功能?
表达式支持的字符越多越好。
但即使像 +,-,*,/,() 这样的基本操作也可以。
最佳答案
Is there any such definition defined in the standard C library (C89, C90, if it's compiled)?
不,即使在最近的 C11 或 C18 标准库中也没有。
Is there any non-standard library which has such an function?
我也找不到。你必须编写自己的函数来完成它。
也许在第一步扫描字符串并将其中的每个值存储到一个单独的字符串中。
正如我已经在评论中建议的那样,strtol
用于将字符串中的整数值(如 11
)转换为 int
类型的值>。您可能需要利用它。在库中还有一个 atoi
函数可以将字符串中的整数值转换为 int
,但是这个函数更容易出错,不应该使用。
算术运算符也应存储在单独的字符串中,但稍后由自制例程求值。
但是可以在这里找到很好的例子和建议,用户被问到类似(如果不相同)的问题:
C: convert a mathematical expression string into an int with the result
关于c - 是否有任何 C 函数可以计算标准库中定义的字符串表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60246999/