Это должно быть:
char *c = malloc (sizeof (char) * (strlen (a) + strlen (b) + 2));
c[0] = '\0';
strcat(c, a);
strcat(c, "+");
strcat(c, b);
Причиной сбоя вашей процедуры является то, что вы сделали:
char *c[strlen(a) + strlen (b) + 2];
, которые объявляют c
как массив указателей,а также не инициализировал массив с '\0'
.Это должно быть похоже на
char c[strlen(a) + strlen (b) + 2];
Вы также должны инициализировать массив пустой строкой, так как strcat
найдет '\0'
во время объединения.
Обратите внимание, чтоНет проблем в выполнении при ошибке в char *c[strlen(a) + strlen (b) + 2];
, так как каждое местоположение будет иметь длину 4 байта, поэтому массив может вместить в него символы.Но это не правильно.