strcpy的作用是将一个字符串的内容复制到另外一个字符数组中,包括字符串的终结符
#include <stdio.h>
#include<assert.h>
#include<Windows.h>
char * my_strcpy(char *dest, const char *src)
{
assert(dest != NULL);
assert(src != NULL);
char *ret = dest;
while (*dest++ = *src++)
//先进行了复制再进行了++,当赋值到终结符‘\0’时,不符合while的判断条件,退出循环
//而此时已经将所有的内容复复制到字符数组中了
{
;
}
return ret;
}
int main()
{
char a[10];//必须给够足够大的空间,使其能将字符完全复制
char *q = "bcd";
printf("%s\n", my_strcpy(a, q));
system("pause");
return 0;
}
如果源字符串的长度大于目标字符数组的长度,多出的部分仍然会被拷贝,但是将会侵占不属于他的空间,发生不可预知的结果。所以在编写时必须给够足够大的空间
但是在使用过程中并不建议使用strcpy,strcpy可能会发生溢出,建议使用strncpy
strncpy是将一个字符串的n个字符复制到另一个字符串中,模拟实现strncpy是要注意到字符串的"\0",因为是复制n个字符所以并不知道是否将"\0"复制到目标字符串中,
所以要在程序中加上给目标字符串附上"\0"