我正在尝试编写一个计算器程序,因此其中一部分我需要评估一个表达式。
所以我需要根据给定的运算符执行操作。我将整个表达式放入一个字符串中。
例如,它可能是 5+6 或 5*6。
所以我是这样写的:
char input1[20] = "";
char input2[20] = "";
char output[20] = "";
char *arg1= NULL, *arg2 = NULL;
int value;
getinput ( input1); //Function for getting the expression
strcpy (input2, input1);
if ( arg1 = strtok (input1, "*"))
{
arg2 = strtok (NULL, "");
value = atoi(arg1) * atoi(arg2);
}
else
{
char* arg1, *arg2;
arg1 = strtok ( input2, "+");
arg2 = strtok ( NULL, "");
value = atoi (arg1) + atoi(arg2);
}
sprintf (output,"%d", value);
printf ("The output value is %s", output);
此代码仅在我给出具有乘法的表达式时才有效。例如,它只有在我给出 5*6 时才有效。如果我给出 5+6,这将不起作用。
问题出在其他部分。它无法对字符串 input2 进行标记。
我不能在一个程序中标记两个不同的字符串。
我哪里错了?有人可以解释一下为什么 strtok 不适用于 secong 字符串的概念吗?