- 调用形式
strcpy(字符串1,字符串2);
- 功能
将字符串2复制到字符串1的存储单元中
- 代码演示
#include<stdio.h>
int main()
{
char s1[10] = "hello";
char s2[10] = "world";
strcpy(s1, s2);
printf("%s",strcpy(str2,str1));
return 0;
}
- 模拟实现strcpy函数
#include<stdio.h>
#include<assert.h>
char*my_strcpy(char*dest, char*src)
{
char *tmp = dest;
while (*src != '\0')
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return tmp;
}
int main()
{
char s1[10] = "hello";
char s2[10] = "world";
printf("%s\n", my_strcpy(s1, s2));
return 0;
}
- 优化
#include<stdio.h>
#include<assert.h>
char*my_strcpy(char*dest, const char*src)
{
char *tmp = dest;
assert(dest != NULL);//断言,如果为空指针,编译器会报错
assert(src != NULL);
while (*dest++ = *src++)
{
;
}
return tmp;
}
int main()
{
char s1[10] = "hello";
char s2[10] = "world";
printf("%s\n", my_strcpy(s1, s2));
return 0;
}
- 为什么返回char* ?
为了实现链式访问(把一个函数的返回值作为一个函数的参数) 为什么用const修饰?
防止反向(目标文件到源文件)拷贝发生错误,即使发生错误,编译器也会在编译的时候报错,提高了代码的健壮性。对const的补充