【发布时间】:2018-07-23 10:23:12
【问题描述】:
我在将“(5+2)*3”之类的字符串转换为能够计算为 21 时遇到问题。
这是我的代码:
char inp[10];
printf("Write it: ");
scanf("%s", inp);
printf("Okay, computing!\n");
printf("INPUT: %s \n", inp);
printf("It's %d \n", (int)inp);
我想在最后得到一个数字。 此代码有效:
printf("19+31 is '''%d'''", 19+31);
我需要使用第二个参数 - 19+31 - 作为我的输入。
第一个代码输出如下:
Write it: 4+4
Okay, computing!
INPUT: 4+4
It's 329554704
【问题讨论】:
-
无法计算字符串中的表达式,无论是在编译时还是运行时。如果你想读取和评估表达式,你必须编写一个 parser 来解析输入,以及一个 evaluator 或 interpreter 来处理解析后的输入.
-
我只想将数字转换成字符串,然后用数学运算符执行。
-
@Someprogrammerdude - 不是 C 语言。 OP 应该选择一种允许这种操作的解释语言 - 例如 python 及其 eval 数学方法
-
@PingvinChannel 你不能用 C 和(从问题来看)我认为你没有足够的经验来编写解析器和评估器(这是复杂的编程任务)