strcpy函数的理解
strcpy函数其实是一种替换函数,用arr2中的元素去替换arr1中的元素,如果不够的话就会补上’\0’
strcpy函数的数据类型
char* strcpy(char* destination,const char* source);
这个函数的两个参数分别是拷贝的终点和拷贝的源头
strcpy函数的运用
例如我想把arr2数组拷贝到arr1数组中
此时我只需要写代码
int main()
{
char arr1[] = "abcdefg";
char arr2[] = "hello";
strcpy(arr1,arr2);
return 0;
}
原理:把arr2拷贝到arr1的数组里面的时候把\0也一样的拷贝过去了,最后arr2和arr1中存放的都是hello\0这几个元素
运行结果并且进行打印,结果如下:
即strcpy函数会对拷贝终点数组的原来元素进行覆盖处理
自己实现strcpy函数
方法一
my_strcpy(char* dest, char* source)
{
assert(dest != NULL);
assert(source != NULL);
while (*source != '\0')
{
*dest = *source;
dest++;
source++;
}
*dest = *source;
}
解释:
①assert是保证这两个指针不是空指针
最后一句代码是把\0也拷贝到dest数组中
方法二
my_strcpy(char* dest, char* source)
{
assert(dest != NULL);
assert(source != NULL);
while (*dest++ = *source++)
{
;
}
}
解释:
①首先运用了先解引用然后后置++,可以替换掉方法一的两个繁琐的++
②while括号表达式中其实是source的值,当source找到了\0后会自动跳出
ps:当赋值表达式放在了判断情况的时候,返回的是右边的值
strcpy函数的注意事项
①源字符串必须要以\0结束
②会把源字符串的\0拷贝到目标字符串中
③目标空间必须足够大,以确保可以存放原字符串
④目标空间必须可变,即不可以是const修饰的或是常量字符串