连接2个字符串并返回一个新指针

时间:2011-07-10 23:15:59

标签: c string function pointers

我不确定我是不是在做梦,因为我无法在任何地方找到这个功能。该函数调用2个字符串进行连接,然后将指针返回到新分配的内存块,并将2个字符串融合。

有谁知道这样的功能?

4 个答案:

答案 0 :(得分:3)

我不知道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;
}

答案 1 :(得分:1)

你能想到GLibg_strconcat()功能吗?它不是相当相同的东西:它需要一个NULL - 终止的字符串列表,而不仅仅是两个字符串。

没有标准函数将字符串连接到libc中新分配的字符串。

答案 2 :(得分:0)

请检查此问题:Using strcat in C

此外,glib提供了许多处理字符串的函数,如果你能负担得起额外的依赖。

答案 3 :(得分:0)

我不知道现成的,但是这个经过轻度测试的实施怎么样:

char* strdup_cat( char const* s1, char const* s2)
{
    size_t siz1 = strlen(s1);
    size_t siz2 = strlen(s2);

    char* result = (char*) malloc(siz1 + siz2 + 1);

    if (result) {
        memcpy( result, s1, siz1);
        memcpy( result + siz1, s2, siz2 + 1);
    }

    return result;
}