0
是否可以將用戶輸入作爲要在表達式中使用的變量?將用戶輸入作爲運算符轉換爲表達式
scanf("%s", op); //User enters "==" or "!="
if(x op y)
//Go.
是否可以將用戶輸入作爲要在表達式中使用的變量?將用戶輸入作爲運算符轉換爲表達式
scanf("%s", op); //User enters "==" or "!="
if(x op y)
//Go.
號,你能做的最好的是一樣的東西:
scanf("%s", &op);
if (strcmp(op, "==") == 0) {
result = x == y;
}
else if (strcmp(op, "!=") == 0) {
result = x != y;
}
// now use result
什麼你實際上要求的是做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;
}
}
}
我編輯的反映一個事實,即C不設有運營商的關鍵字。 – dmckee 2011-03-24 02:04:51