是否可以将用户输入作为变量用于表达?
scanf("%s", op); //User enters "==" or "!="
if(x op y)
//Go.
答案 0 :(得分:6)
没有。你能做的最好就是:
scanf("%s", &op);
if (strcmp(op, "==") == 0) {
result = x == y;
}
else if (strcmp(op, "!=") == 0) {
result = x != y;
}
// now use result
答案 1 :(得分:0)
你基本上要求的是做eval的能力。一些动态语言(python等)支持它但不支持C.即使支持eval,您仍需要出于安全原因进行输入验证。
以下C代码使用抽象和调度表执行此操作:
#include <stdio.h>
typedef int (*func)(int op1, int op2);
struct op {
char *opstr;
func op_func;
};
int add_func(int op1, int op2)
{
return op1 + op2;
}
int sub_func(int op1, int op2)
{
return op1 - op2;
}
struct op ops[] = { {"+", add_func}, {"-", sub_func} };
int main (int argc, char const* argv[])
{
int x = 10, y = 5, i = 0;
char op[10];
scanf("%s", &op);
for(i = 0; i < sizeof(ops)/sizeof(ops[0]); i++){
if(strcmp(ops[i].opstr, op) == 0){
printf("%d\n", ops[i].op_func(x, y));
break;
}
}
}