zoukankan      html  css  js  c++  java
  • 《C语言笔记:一些自实现的字符串函数》

    一,int myStrlen(const char *s);

    size_t myStrlen(const char *s)
    {
        size_t cnt = 0;
        while(*s++ != '')
        {
            cnt++;
        }
    
        return cnt;
    }

    二,char *myStrcpy(char *dest, const char *src);

    char *myStrcpy(char *dest, const char *src)
    {
        char *temp = dest;
    
        if(src == NULL || dest == NULL)
        {
            return NULL;
        }
            
        
        while((*dest++ = *src++) != '');
    
        return temp;
    }

    三,char *myStrncpy(char *dest, const char *src, size_t n)

    char *myStrncpy(char *dest, const char *src, size_t n)
    {
        char *temp = dest;
        if(!n)
        {
            return temp;
        }
       if(src == NULL || dest == NULL)
        {
            return NULL;
        }
      while( (n--) && (*dest++ = *src++) != ''); *dest = '';
      
       return temp;
    }

     四,void *myMemset(void *s, int c, size_t n);

    void *myMemset(void *s, int c, size_t n)
    {
        char *tmp = (char *)s;
        while(n)
        {
            tmp[n-- - 1] = c;
        }
    
        return s;
    }

    五,char *myStrcat(char *dest, const char *src);

    char *myStrcat(char *dest, const char *src)
    {
        char *tmp = dest;
        if(src == NULL || dest == NULL)
        {
            return NULL;
        }
    
        while(*dest++ != '');
    
        dest--;
    
        while((*dest++ = *src++) != '');
    
        return tmp;
    
    }

    6,char *strncat(char *dest, const char *src, size_t n);

    char *myStrncat(char *dest, const char *src, size_t n)
    {
    
        char *tmp = dest;
        if(src == NULL || dest == NULL)
        {
            return NULL;
        }
    
        while(*dest++ != '');
    
        dest--;
    
        while((n--) && (*dest++ = *src++) != '');
    
        *dest = '';
    }

     7,int strcmp(const char *s1, const char *s2);

    int myStrcmp(const char *s1, const char *s2)
    {
        int s1Len = myStrlen(s1); 
        int s2Len = myStrlen(s2);
        int min = (s1Len>s2Len?s2Len:s1Len);
        int i = 0;
    
        for(i;i<min;i++)
        {
            if(*s1 != *s2)
            {
                return *s1-*s2;
            }
    
            s1++;
            s2++;
        }
    
        return 0;
    
    }

    8,int strncmp(const char *s1, const char *s2, size_t n);

    int myStrncmp(const char *s1, const char *s2, size_t n)
    {
    
        int s1Len = myStrlen(s1); 
        int s2Len = myStrlen(s2);
        int min = (s1Len>s2Len?s2Len:s1Len);
        int i = 0;
    
        min = (min>n?n:min);
    
        for(i;i<min;i++)
        {
            if(*s1 != *s2)
            {
                return *s1-*s2;
            }
    
            s1++;
            s2++;
        }
    
        return 0;
    
    
    }

     9,char *myStrchr(const char *s, int c);

    char *myStrchr(const char *s, int c)
    {
        if(NULL == s || (char)0 == c)
        {
            return NULL;
        }
    
        while((*s++ != c) && (*s != ''));
    
        if(*s == '')
        {
            return NULL;
        }
        else
        {
            return --s;
        }
        
    
    }

    10,char *myStrrchr(const char *s, int c);

    char *myStrrchr(const char *s, int c)
    {
        char head;
        head = *s;
        
        //printf(" debug  %c  
    ",head);
        
        while(*s++ != '');
    
        while((*s-- != c) && (*s != head));
        
        if(*s == head && *s != c)
        {
            return NULL;
        }
        else
        {
            return ++s;
        }
    
    }

     11,char *myStrstr(const char *haystack, const char *needle);

    char *myStrstr(const char *haystack, const char *needle)
    {
        int hayLen = myStrlen(haystack);
        int needLen = myStrlen(needle);
        int equlNum = 0;
        char *fristPos = NULL;
        char *pos = needle;
    
        if(needLen>hayLen)
        {
            return NULL;
        }
    
        while(*haystack != '')
        {
            if(*pos == *haystack)
            {
                if(0==equlNum)
                {
                    fristPos = haystack;
                }
                else if(equlNum == needLen-1)
                {
                    return fristPos;
                }
                equlNum++;
                pos++;
            }
            else
            {
                equlNum = 0;
                pos = needle;
            }
            
            haystack++;
        }    
    
        return NULL;
    
    }
  • 相关阅读:
    Jenkins配置基于角色的项目权限管理--转
    linux下ssh/scp无密钥登陆方法
    Jenkins+Maven+Git CI环境搭建手册
    Linux操作系统下的Sudo命令
    使用secureCRT远程Linux,出现远程主机拒绝连接
    解决SecureCRT连接linux超时后断开
    使用git整体流程
    JAVA Map集合类简介
    几个经常用到的字符串的截取(java)
    maven
  • 原文地址:https://www.cnblogs.com/xuxianshen/p/13976238.html
Copyright © 2011-2022 走看看