问答详情
源自:6-8 字符串函数

为啥先strcat(s2,s3);再strcpy(s1,s2);会报错?

如题,不太懂

提问者:芥末菌的忧伤 2015-03-03 12:30

个回答

  • onemoo
    2015-03-03 17:43:58

    s1是一个长度为100的字符数组。

    s2是一个长度为4的字符数组。

    s3是一个长度为4的字符数组。

    strcat(s2, s3) 这个函数是将s3中的内容(包括s3结尾的'\0')复制到s2中最后一个字符的后面(覆盖掉s2原来结尾的'\0'),这样就能把两个字符串中的字符连起来了,并且还是'\0'结尾。

    但这需要s2有足够的长度来容纳这么多的字符,长度至少为 strlen(s2) + strlen(s3) + 1,最后这个1就是结尾的'\0'。否则就会写越界。

  • 小精灵的伙伴
    2015-03-03 13:56:45

    你好,这是因为字符数组s2的长度只能容纳"我爱,"这几个字符和'\0',无法z再把数组s3接上去