strcpy
C语言标准库函数,把从src地址开始且含有’\0’结束符的字符串复制到以des开始的地址空间。
C语言函数
原型声明:char* strcpy(char *dest, const char *src);
头文件:#include<string.h> #include<stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间;
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串;
返回值:返回指向dest的指针。
典型实现
//
//C语言标准库函数strcpy的一种典型的工业级的最简实现。
//返回值:目标串的地址
char* strcpy(char* strDes, const char* strSrc)
{
char* strDesCopy = strDes;
assert ((strDes != NULL)) && (strSrc != NULL);
while ((*strDes++ = *strSrc++) != NULL)
;
return strDesCopy;
}
//优化版
char* strcpy(char* strDes, const char* strSrc)
{
assert (strSrc != NULL);
strDes = (char*)malloc(strlen(strSrc) + 1);
char* strDesCopy = strDes;
while ((*strDes++ = *strSrc++) != '\0')
;
return strDesCopy;
}
//最终版
char *strcpy(char *strDest, const char *strSrc)
{
if (strDest == NULL || strSrc == NULL)
return NULL;
if (strDest == strSrc)
return strDest;
char *tempDest = strDest;
while((*strDest++ = *strSrc++) != '\0');
return tempDest;
}
//或者
char *strcpy(char *strDest, const char *strSrc)
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != '\0' ) // 2分
NULL ;
return address ; // 2分
}