Для написанной вами функции требуются две C-строки (т.е. две const char *
переменные). Здесь ваш второй аргумент - command[0]
, который является не указателем (const char *
), а простым символом 'n' (const char
). Функция, однако, считает, что переданное вами значение является указателем, и пытается найти строку в адресе памяти, заданную значением ASCII буквы «n», что вызывает проблему.
РЕДАКТИРОВАТЬ: Чтобы это работало, вам нужно изменить функцию join
:
char *join(const char* s1, const char c)
{
int len = strlen(s1);
char* result = malloc(len + 2);
if (result)
{
strcpy(result, s1);
result[len] = c; //add the extra character
result[len+1] = '\0'; //terminate the string
}
return result;
}