Я пытаюсь написать функцию для преобразования строки в математическую операцию.
int RPN_Evaluate(char * rpn_string, double * result)
{
struct Stack calculate = {};
char *token;
char *endptr;
double x,y;
token = strtok(rpn_string, " ");
while (token != NULL) {
*number = strtof(token, &endptr);
if (*token == '+') {
StackPop(&calculate, &y);
StackPop(&calculate, &x);
result_operation = x + y;
StackPush(&calculate, result_operation);
} else if (*token == '-') {
StackPop(&calculate, &y);
StackPop(&calculate, &x);
result_operation = x - y;
StackPush(&calculate, result_operation);
}else if (*endptr != NULL) {
return RPN_ERROR_INVALID_TOKEN;
} else if (*endptr == NULL) {
StackPush(&calculate, *number);
}
token = strtok(NULL, " ");
}
StackPop(&calculate, result);
return RPN_NO_ERROR;
}
Если я введу «1 1 +», все будет работать нормально. Тем не менее, я сталкиваюсь с проблемой, когда я передаю "2 -1 +". Есть ли способ использовать strtof () для преобразования "-1" в -1? strtof (), похоже, не делает этого автоматически.