c - 是否有任何 C 函数可以计算标准库中定义的字符串表达式?

标签 c string type-conversion integer expression

我正在寻找一个可以将字符串表达式计算为整数的函数,例如 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/

相关文章:

c - gcc 为什么以及如何发出 gets() 警告?

C:存储调用main时传递的参数

c# - 无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换来转换类型

c - 二进制 int* 数组到 int 等价物

c - C 编译器如何实现参数个数可变的函数?

c# - 在 C# 中操作 RegEx 匹配以进行计算

c# - 检查日期字符串是什么区域性,然后将其转换为 DateTime

python - 通过 IPython Notebook 转换更改 PDF-Latex 输出的样式

java - 转换日期时间并插入 MySQL

c - 将数据格式化为十六进制字符串以增加 C 中的 MD5 哈希计算