请教高手一段代码关于自己写的strcat函数

来源:百度知道 编辑:UC知道 时间:2024/06/30 00:33:20
char *my_strcat(char *str1, const char *str2)
{
char *tmp=str1;
while (*tmp) tmp++;
while (*tmp++=*str2++);
return tmp;
}

小弟有些看不懂,特别是(*tmp++=*str2++); 究竟怎么样实现字符串连接的请指教谢谢!

简单的说,
while (*tmp) tmp++; 这一行是找到str1的末尾的地址
而while (*tmp++=*str2++); 这一行做的是:
1. 将str2当前所指的字符赋给tmp当前的位置(就是str1的末尾的那个'\0')
2. str2和tmp都后移一位(这样tmp还是指向str1的末尾,str2指向当前的str2里的那个字符)
3. 重复1
注意最后一步,当str2指向原来那个str2字符串的末尾的'\0'时候,赋值仍然进行,所以新的str1的末尾也有个'\0'结尾(以前的那个在第1步的时候被str2的开头字符覆盖了)
这时while的条件变成false,所以循环结束。