Могу ли я использовать strtof () для преобразования «отрицательного числа»? - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь написать функцию для преобразования строки в математическую операцию.


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 (), похоже, не делает этого автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...