C语言学习之strcpy函数

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分
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值