strcpy函数的实现

来源:互联网 发布:java 构造函数 编辑:程序博客网 时间:2024/05/29 10:33
流行的strcpy函数写法是:
void strcpy(char *ch1,const char *ch2){    while(*ch2 != '\0') 
{           *ch1 ++ = *ch2 ++;  // 这样拆开来写后,易读性强一些~~    }}

如果考虑ch1,ch2的安全性,提前要判断这两个指针是否为空,则可以这么写
  1. char *my_strcpy(char *dst,const char *src)  
  2. {  
  3.     assert(dst != NULL);  
  4.     assert(src != NULL);  
  5.     char *ret = dst;  
  6.     while((* dst++ = * src++) != '\0')   
  7.         ;  
  8.     return ret;  

注:

1,检查指针有效性;

2,返回目的指针des;

3,源字符串的末尾 '\0' 需要拷贝。


************************************************************************************************************************************************************
关于该函数,也可以返回实际拷贝的字符个数,
如:
int strcpy(char *ch1,const char *ch2)
{
    int flag=0;
while(*ch2 != '\0') 
{
*ch1 ++ = *ch2 ++;  // 这样拆开来写后,易读性强一些~~
flag++;
}
return flag;
}

************************************************************************************************************************************************************
while(*ch2 != '\0') 
{
*ch1 ++ = *ch2 ++;  // 这样拆开来写后,易读性强一些~~
flag++;
}


循环里的内容,其实可以进一步拆分
例如,
while(*Src!='\0')
{
*Dest=*Src;
Dest++;
Src++;
}
0 0