首页 > 解决方案 > 练习 5-3。编写我们在第 2 章中展示的函数 strcat 的指针版本: strcat(s,t) 将字符串 t 复制到 s 的末尾

问题描述

无法弄清楚为什么当参数是相同的字符串时程序不起作用。

int main (void) {
    char s[] = "123";
    strcat(s, s);
    return 0;
}

void strcat (char *s, char *t) {
    int len = strlen(s);
    while (*t != '\0')
        *(s + len++) = *t++;
    *(s + len) = '\0';
}

标签: c

解决方案


您需要在第一个字符串中留出空间来连接第二个字符串。而且您正在修改您正在读取的相同内存。正如您所做的那样,您正在删除终止字符,因此这可能会以无限循环告终。


推荐阅读