Программа должна получать данные из командной строки, как в типе аргументов командной строки. Где после -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);