首页 > c语言,一个连接两字符串的函数。

c语言,一个连接两字符串的函数。

void fun(char p1[],char p2[]){
    ​while ((p1++) != '\0');
    ​while ((p2++) != '\0')
    ​*(p1++)=*(p2++);
    ​*p1='\0';
}

将两个字符串传入fun(),并实现字符串p2连接在字符串p1后面。运行一直无限循环。


所给出的答案中直接将第2个字符串的内容写到第一个字符串的后面,可能会导致覆盖其他数据,也可能会导致内存访问越界。一般都是先要根据整个2个字符串的长度malloc一块新的内存,然后再将字符串1和2分别strncpy到这块新分配的内存上去,得到拼接的字符串。


谢谢@leunggamciu,我自己没注意好。修改后发现还有两粗心的地方,现已更正完毕。

void fun(char *p1,char *p2){
    while (*(p1++) != '\0');
    p1--;
    while (*(p2) != '\0')
        *(p1++)=*(p2++);
    *p1='\0';
}

*(p1++) != '\0';
*(p2++) != '\0';

不细心!


楼主这个函数,就算不无限循环了,也连接不成功吧。因为你将p2的字符放到了p1的起始处呀。
可以参考,已有的源码:

char *strcat(char *s, const char *append)
{
    char    *t = s;

    for (; *t; ++t)
        ;
    while ((*t++ = *append++) != '\0')
        ;
    return (s);
}
【热门文章】
【热门文章】