因为面试的时候经常考到,所以就自己总结了一下。
注意点:为前一个字符串的空间要够后边字符串的存储。
strcat原型为strcat(char *str1,const char *str2)或者strcat(char a[],char b[])
作用:将str2复制到str1的末尾。或者说将b数组里的元素复制到a数组元素的末尾。
char *strcat(char *str1,const char *str2 ){
char *str3 = str1;
assert((str1!= NULL) && (str2!= NULL));
while(*str1) //*str !='/0'
str1++;
while(*str1++ = *str2++)
NULL;
return str3;
}
测试的时候发现不能对第一个参数使用char a* = “hello”,因为这个是常量,将第二个字符串加到第一个字符串上时,会改变常量。切记常量放在静态区常量不可改变。
Strcpy(char *str1,const char *str2)
作用:
将字符串*str2 copy到str1的空间里。或者说字符数组str2[] copy 到str1[]中。
char *strcpy(char *str1, const char *str2)
{
char *address=str1;
assert((str1 != NULL) && (str2 != NULL));
while(*str2) // 是while(*strScr != ’/0’)的简化形式;
{
*str1++ = *str2++;
}
*str1 = '/0'; // 当str1字符串长度小于原str2字符长度
return address; // 时,就会出错。
}