zoukankan      html  css  js  c++  java
  • strcpy函数

    http://www.cnblogs.com/chenyg32/p/3739564.html

    char * strcpy(char* dst, const char *src)
    {
         assert(dst!=NULL && src != NULL);
        
        char *res = dst;
        while((*dst++ = *src++)!='');
    
        return res;
    }
    

      

    重点笔记:

    1. src 使用 const 修饰,保护原变量;

    2. 参数判空,保护程序;

    3. 返回目标字符串地址;

    4. 谨记字符串末尾的结束符 '';

    5. 考虑内存重叠??????

    内存重叠的拷贝函数:

    char *strcpy(char *dst, const char*src)
    {    
          assert(dst!=NULL && src!=NULL);
           char *ret = dst;
           my_memcpy(dst, src, strlen(src)+1);//重点:一定要长度+1,拷贝进去''
            return ret;
    }
    
    char * my_memcpy(char *dst, const char* src, int cnt)
    {
            assert(dst!=NULL && src != NULL && cnt>0);
            char * ret = dst;
            
            if (dst>=src && dst<=src+cnt-1)
            {
                dst = dst+cnt-1;
                src = src+cnt-1;
                while(cnt--)
                {
                    *dst-- = *src--;
                }
            }
            else
            {
                while(cnt--)
                    *dst++ = *src++;
            }
            return ret;
    }
    

    首先检测是否有重叠区域,若有的话从后往前赋值内容;否则正常从前往后赋值内容;

    特别注意的是,当调用上述 my_memcpy 接口时谨记传入的字符串长度要包括末尾的''字符

  • 相关阅读:
    saltstack
    python一个命令开启http服务器
    常用服务安装部署
    位置1
    linux中python3安装和使用
    Linux基础系统优化
    Shell基本命令
    linux系统目录结构
    远程连接linux服务器
    VMware和Centos安装使用
  • 原文地址:https://www.cnblogs.com/weiyi-mgh/p/7223070.html
Copyright © 2011-2022 走看看