Есть ли признаки, которые не следует использовать в качестве аргументов командной строки? - PullRequest
0 голосов
/ 02 мая 2020

Программа должна получать данные из командной строки, как в типе аргументов командной строки. Где после -s должны быть напечатаны строки, которые будут соединены, и после -b числа, которые будут складываться в сумму.

Обычные аргументы ввода: -s ab cd ef -b 1 2 3 это должно дать мне строку: abcdef sum: 6

Теперь проблема заключается в том, что когда я вводю в строковый раздел что-то вроде: -s ab $ d ef -b 1 2 3. Этот знак будет игнорировать строку, а также такие знаки, как: ", #, & ...

Что приводит меня к вопросу, есть ли признаки, которые не должны использоваться в качестве аргументов командной строки?

Прототип функции:

void merge_add(int argc, char **argv, char* (*merge)(char *, char *), int (*add)(int, int)

Это код функции:

char *str = calloc(1, sizeof(char));
int sum = 0;
int j;

for (int i = 0; i < argc; i++)
{
    if (strcmp(argv[i], "-s") == 0)
    {
        j = i + 1;
        while (j < argc && strcmp(argv[j], "-b"))
        {
            str = realloc(str, sizeof(str) + sizeof(*argv[j]) + 1);
            strcpy(str, merge(str, argv[j]));
            j++;
        }
    }

    if (strcmp(argv[i], "-b") == 0)
    {
        j = i + 1;
        while (j < argc && strcmp(argv[j], "-s"))
        {
            sum = (*add)(sum, atoi(argv[j]));
            j++;
        }
    }
}

printf("sum:%d\n", sum);
printf("string:%s\n", str);
free(str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...