【发布时间】:2014-02-09 10:35:59
【问题描述】:
我有一个简单的 C 程序
int main()
{
int n, maxn = 21;
float SN, x;
printf("input x:");
scanf("%f", &x);
printf("input maxn:");
scanf("%d", &maxn);
for(n=0;n<=maxn;n++){
SN = SN + pow(x,n);
n = n + 1;
}
printf("%f", SN);
getch();
return 0;
}
我需要使它具有通用性,以便用户可以输入任何表达式以用用户从键盘输入的任何内容替换 pow(x, n)。如何将表达式放入程序中?
【问题讨论】:
-
有一个工具可以完全满足您的需求。它被称为 bc 并且它是免费软件ftp.gnu.org/gnu/bc 检查 url 并查看源代码是如何解析数学表达式的。如果您使用的是 windows,您可能必须使用 cygwin 来获取它的预编译版本。
-
理论上有可能通过使用动态链接库来做与
eval类似的事情。您可以从用户字符串生成一个简单的代码,将其编译为动态库并加载到您的程序中。它闻起来像黑客,你需要在执行代码的机器上安装一个兼容的编译器。这个问题被搁置了,否则我会发布一个演示代码......