首页 > 解决方案 > 如何获取一个字符串,然后将其用作计算?

问题描述

假设他们输入r = (i == 16),我怎样才能接受这个然后运行它作为输出?

这是我得到的错误。

G:\Code\Tutorial 3\main.c|104|error: assignment to expression with array type


代码

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main()
{
    int answer;
    char operation[20];
    int i = 16;
    int j = 32;
    int k = 8;
    bool r;
    printf("Input an operation:\n");
    fgets(operation, sizeof(operation), stdin);
    operation = answer;
    if (answer == 1)
        printf("The operation you entered was true.");
    else
        printf("The operation you entered was false.");
}

标签: cstring

解决方案


如果我理解正确,您希望允许用户输入一个包含一段 C 代码的字符串。在您的示例中,输入字符串是r = (i == 16).

然后,您想执行用户输入的任何一段 C 代码。如果输入的 C 代码包含任何变量(在您的示例中) ri您希望在程序中使用实际变量的值。

因为 C 是一种编译语言,所以实现起来非常困难(我会说几乎不可能)。您必须编写一个编译器来将输入的 C 代码编译为机器代码。即便如此,要让生成的机器代码访问正在运行的程序中的上下文(例如变量)也是非常困难的。

无意冒犯,但这种锻炼远远超出了你的水平。如果这是来自作业,这不是你的老师希望你做的。

PS 1:如果输入不是一段任意的 C 代码,而只是具有有限运算符集的表达式,则任务会变得更简单。

PS 2:在 Python 等更动态的语言中,这更容易实现(例如,查看 Pythoneval语句)。如果您可以灵活地选择编程语言,那么使用 Python 之类的语言可能是更好的方法。


推荐阅读