首页 > 解决方案 > 不使用 strcat 连接两个字符串

问题描述

我写了一个函数来连接两个字符串(s= "computer"; t= "keyboard"),但我的代码只返回"keyboard". 请指出错误。

char *concat(char *s, char *t) {
    s = malloc((strlen(s) + strlen(t) + 1) * sizeof(char));
    char *p = s;
    while (*p != '\0') {
        ++p;
    }
    while (*t != '\0') {
        *p++ = *t++;
    }
    *p = '\0';
    return s;
}

我不想使用strcat(). 这是来自 Stepik 的测试程序,因此我无法更改main函数中的任何内容。 问题是:编写一个函数,它接收两个字符指针并返回一个表示它们连接的新字符指针。

标签: cmallocstring-concatenation

解决方案


char *myconcat(const char *s1, const char *s2)
{
    size_t len1,len2;
    char *result = malloc((len1 = strlen(s1)) + (len2 = strlen(s2)) + 1);

    if(result)
    {
        memcpy(result, s1, len1);
        memcpy(result + len1, s2, len2 + 1);
    }
    return result;
}

推荐阅读