strcat连接字符串自身的问题。

一本通测评网站,题号2050,原本想用strcat(str,str),将字符串str复制一倍,但提交的时候出现运行错误(本地编译运行都正常)

后来发现其原因在于内存交叉。

例如这么写strcat函数

my_strcat(char *a,char *b){

while(*a) a++;

while(*b) *a++=*b++;

}

如上,出现了内存交叉,在cat过程中b不是一层不变的,b的长度会越来越长,直到越界。

一句话,不要使用strcat(str,str)。

strcat(str1,str2)可以正常使用。

posted @ 2021-09-22 00:27  蒟蒻教练  阅读(128)  评论(0编辑  收藏  举报