Мне нужно вычислить числа из ввода argv, но числа не являются целыми числами, они являются символами. Как я могу сыграть? - PullRequest
0 голосов
/ 12 апреля 2019

Я не могу вычислить числа, которые не являются целыми числами.Мне нужен способ преобразования символов в строки для использования функции atoi () или, по крайней мере, способ вычисления этих чисел

Я попытался вычесть 48 / '0' из символа.

argv = ADD 2 3 5 7 11 13

#define MINIMUM_ARGS 2

int main(int argc, char** argv)
{
    int i = 0;
    int calc = 0;
    char string[2] = { 0 };
    if ((strcmp(argv[1], "SUB") == 0 || strcmp(argv[1], "ADD") == 0) && ((argc - MINIMUM_ARGS) > 1))
    {
        string[0] = argv[2];  //Making calc be the value of the first number.
        calc = atoi(string);
        for (i = 3; i < argc; i++)
        {
            if (strcmp(argv[1], "SUB") == 0)
            {
                if (strlen(argv[i]) > MINIMUM_ARGS)
                {
                    calc -= atoi(argv[i]);
                }
                else
                {         
                    calc -= atoi(argv[i] - 48);
                }
            }
            else
            {
                if (strlen(argv[i]) < MINIMUM_ARGS)
                {
                    string[0] = argv[i];
                    calc += atoi(string);
                }
                else
                {
                    calc += atoi(argv[i]);
                }
            }

        }
        printf("Result: %d", calc);

    }

Ожидается = 41 Получено = 0

1 Ответ

0 голосов
/ 12 апреля 2019

Мне кажется, что вы делаете вещи более сложными, чем нужно. Я не понимаю, почему MINIMUM_ARGS используется в коде, который преобразует входные строки в числа - atoi это все, что вам нужно.

Возможно, как:

#define MINIMUM_ARGS 3

int main(int argc, char** argv)
{
    int i = 0;
    int calc = 0;
    if ((strcmp(argv[1], "SUB") == 0 || strcmp(argv[1], "ADD") == 0) && (argc >= MINIMUM_ARGS))
    {
        calc = atoi(argv[2]);
        for (i = 3; i < argc; i++)
        {
            if (strcmp(argv[1], "SUB") == 0)
            {
              calc -= atoi(argv[i]);
            }
            else
            {
              calc += atoi(argv[i]);
            }

        }
        printf("Result: %d\n", calc);

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