#include<string.h>
char* strcpy(char * destination, const char * source );
1、源字符串必须以 ‘\0’ 结束。
2、会将源字符串中的 ‘\0’ 拷贝到目标空间。
3、目标空间必须可变。
destination不能为arr[]="asdfasf"或者为char* p=“adfasd”
arr[]和p都不可变。
4、目标空间必须足够大,以确保能存放源字符串。
//模拟实现字符串拷贝
#include<assert.h>
char* mystrcpy(char* dest, char* src)
{
assert(dest);
assert(src);
char* ret = dest;
//拷贝src指向的字符串到dest指向的空间,包含'\0'
while (*dest++=*src++)
{
;
}
//返回字符串的首地址。
return ret;
}
char * strncpy ( char * destination, const char * source, size_t num );
1、拷贝num个字符从源字符串到目标空间,不会将’\0’拷贝进去。
2、如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。
//模拟实现strncpy
char* mystrncpy(char* dest, const char* src,int count)
{
char* ret = dest;
while (count&&(*dest++==*src++))//count为0或者原字符串复制完毕跳出循环
{
count--;
}
if (count)//若原字符串复制完毕,count不为0,则其余位置补\0.
{
while (--count)
{
*dest = '\0';
}
}
return ret;//返回首元地址。
}