1.了解strcpy和strcpy
由图可知,返回值是char*
头文件为#include <string.h>
注意:strcpy只用于字符串复制,遇到‘\0’时停止,还会复制字符串的结束符'\0'; 所以源字符串必须以’\0’结束,也会将源字符串的’\0’拷贝到目标空间
2.strcpy和strncpy函数用法
strcpy函数就是把一个字符串复制粘贴到另一个字符串上,也就是把const char * source复制粘贴到char * destination,因为char*source不需要改变,所以可以加一个const修饰。第二张图片我们可以看到strncpy函数比strcpy多了一个size_t num,这是你想要复制的字符数。
3.strcpy和strncpy使用
这是运用strcpy函数把arr2中的字符串拷贝到arr1中的运用。
注意!!!:在使用strcpy函数时,char * destination必须足够大,否则可能会造成缓冲溢出的错误情况。
当出现这种情况时,我们可以考虑用strcnpy函数
这样我们就可以控制我们需要复制的字符串到arr1上面了。
4.strcpy和strncpy函数实现
strcpy函数实现:
char* my_strcpy(char* dest, const char* src)
{
assert(dest != NULL && src != NULL);
char* ret = dest;
while (*dest++ = *src++)//对dest和src两个字符串的第一个字母开始逐个复制粘贴,直到遇到'\0'
{
;
}
*dest = *src;
return ret;
}
int main()
{
char arr1[] = "hellooo";
char arr2[] = "world";
strcpy(arr1, arr2);
printf("%s", arr1);
return 0;
}
在传参过程中,为了避免传空指针,所以用assert来避免一下。
strncpy函数实现:
char* my_strncpy(char* dest, const char* src,int n)
{
assert(dest != NULL && src != NULL);
char* ret = dest;//保留dest的起始地址,strncpy需要返回字符串的起始地址
while (n)
{
*dest = *src;
*dest++;
*src++;
n--;
}
return ret;
}
int main()
{
char arr1[] = "hello";
char arr2[] = "ppp";
my_strncpy(arr1, arr2,3);
printf("%s", arr1);
return 0;
}
注意!!!:这两个函数的实现,都需要返回这个字符串的起始地址 。
对于复制的字符串来说就不需要改变,所以可以加const来修饰。