Я не знаю ничего подобного в стандарте C;POSIX C содержит strdup
, который возвращает вновь выделенную копию предоставленной строки, но это не то, о чем вы просите.
Тем не менее, вы можете легко создать ее самостоятельно:
char * strcat_alloc(const char * first, const char * second)
{
size_t s1=strlen(first), s2=strlen(second), stot=s1+s2+1;
// Length overflow check (see @R.. comment)
if(stot<s2+1)
return NULL;
char * ret = malloc(stot);
if(ret==NULL)
return NULL;
strcpy(ret,first);
strcpy(ret+s1, second);
return ret;
}