Возвращение исходного указателя обеспечивает возможность более удобного вложения вызовов функций:
printf("%s\n", my_strcat(name, lastName));
В отличие от:
my_strcat(name, lastName);
printf("%s\n", name);
Версия, возвращающая char*
, позволяет использовать любой из Вышеуказанные стили.
Кроме того, ваша реализация ненадежно завершает строку нулевым символом. Вы выходите из своего for
l oop, когда вы сталкиваетесь с \0
. Вы все еще хотите добавить это.
Вместо этого:
for (char *letter = appending; *letter != '\0'; letter++)
word[len++] = *letter;
Это:
for (char *letter = appending; *letter != '\0'; letter++)
{
word[len++] = *letter;
}
word[len] = '\0';
Это также будет работать (используйте побочный эффект от назначения как выражение оценки для al oop).
while (word[len] = *appending)
{
appending++;
len++;
}
Как я уже упоминал в своем комментарии ниже, я не большой поклонник использования операторов присваивания в качестве условия. Я предпочитаю стиль, который у тебя есть.