LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

char *concat(const char *s1, const char *s2) {
  int s1_len = strlen(s1);
  int s2_len = strlen(s2);
  char *result = malloc(s1 + s2 + 1);
  memcpy(result, s1, s1_len);
  memcpy(result + s1_len, s2, s2_len);
  result[s1_len + s2_len] = 0;
  return result;
}

SO читать не советую. Читай Керниган&Ритчи, читай классику про юникс, читай паттерны от GoF. C простой язык, с ним не должно быть проблем, которые сложно решить самому.

Исправление Legioner, :

char *concat(const char *s1, const char *s2) {
  int s1_len = strlen(s1);
  int s2_len = strlen(s2);
  char *result = malloc(s1 + s2 + 1);
  memcpy(result, s1, s1_len);
  memcpy(result + s1_len, s2, s2_len);
  result[s1_len + s2_len] = 0;
  return result;
}

Исходная версия Legioner, :

char *concat(const char *s1, const char *s2) {
  int s1_len = strlen(s1);
  int s2_len = strlen(s2);
  char *result = malloc(s1 + s2 + 1);
  memcpy(result, s1, s1_len);
  memcpy(result + s1, s2, s2_len);
  result[s1_len + s2_len] = 0;
  return result;
}