Строка Библиотеки?Я никогда не использую их: P
char * concat(char * dest, const char * src)
{
// creates a pointer to `dest` so we can return it from from its start position.
char * ptr = dest;
// increament dest until the nul-terminated which is 0 (false//loop stops).
while (*dest) dest++;
// so we assign dest pointer to src pointer while increamenting them.
while (*dest++ = *src++);
// return the `dest` pointer.
return ptr;
}
Обратите внимание, что вам нужно выделить первый параметр самостоятельно, потому что эта функция сама объединяет указатель dest
, поэтому возвращаемое значение (равно Необязательно ^^).
Я также заметил, что по какой-то причине ... каждый выделяет память в самой функции, поэтому
я сделал 2nd версию, однако, это не таккак 1-й (хотя вам понадобится возвращаемое значение).
char * concat(char * s1, const char * s2)
{
size_t i = 0;
// length of s1.
while (*s1++) i++;
size_t s1_len = i; i = 0;
s1 -= s1_len + 1;
// length of s2.
while (*s2++) i++;
size_t s2_len = i; i = 0;
s2 -= s2_len + 1;
// allocates memory.
char * newStr = (char *)malloc((s1_len + s2_len)+1); // +1 is for the nul-terminated character.
if(!newStr) return newStr; // if malloc fails, return (null) pointer.
// points to position 0 of the 1st string.
char * ptr = newStr;
// copies the content of s1 to the new string
while (*ptr++ = *s1++);
// get back to the nul-terminated to overwrite it.
*ptr--;
// concentrate
while (*ptr++ = *s2++);
// return the `newStr` pointer.
return newStr;
}