• c语言实现常见字符串函数strchr strstr strcmp atoi itoi(字符串换成整数)


    好久没有更新博客了,刚刚出炉练练手的程序如下,很简单,没有考虑过多复杂的东西,有好的想法,欢迎指教:

    字符查找函数:

    char *my_strchr(const char *s,int c)
    {
        char *pTemp = s;
    
        do
        {
            if(*pTemp == c)
            {
                return pTemp;
            }
        }
        while(*pTemp++);
    
        return NULL;
    }

    字符串比较函数:

    int my_strcmp(const char *s1,const char *s2)
    {
        char *pTemp1 = s1;
        char *pTemp2 = s2;
    
    
        while(*pTemp1 && *pTemp2 && ((*pTemp1++) == (*pTemp2++)));
        //{
            /*return ((*--pTemp1) - (*--pTemp2));*/
        //}//
    
        if(*pTemp1 && *pTemp2)
        {
            return ((*--pTemp1) - (*--pTemp2));
        }
        
    
        if(*pTemp1)
        {
            return *pTemp1;
        }
    
        if(*pTemp2)
        {
            return -*pTemp2;
        }
    
        return 0;
    
    
    }

    字符串查找函数:

    char *my_strstr(const char *haystack,const char * needle)
    {
        char *pTempSrc = haystack;
    
        char *pTempDes = needle;
    
    
        do
        {
            if(*pTempSrc != *pTempDes++)
            {
                pTempDes = needle;
            }
    
            if(!*pTempDes)
            {
                return pTempSrc-(pTempDes-needle)+1;
            }
        }while(*pTempSrc++);
    
        return NULL;
    
    
    }

    内存比较函数:

    int my_memcmp(const void *s1,const void *s2,size_t n)
    {
        char *pTemp1 = s1;
        char *pTemp2 = s2;
    
        while(n-- > 0)
        {
            if(*pTemp1++ != *pTemp2++)
            {
                break;
            }
        }
    
        if(*pTemp1 && *pTemp2)
        {
            return ((*--pTemp1) - (*--pTemp2));
        }
        
    
        if(*pTemp1)
        {
            return *pTemp1;
        }
    
        if(*pTemp2)
        {
            return -*pTemp2;
        }
    
        return 0;
    
    }

    字符串变成数字函数:

    int my_atoi(const char *nptr)
    {
        char *pTemp = nptr;
    
        int sum = 0;
        unsigned flag = 0;
        
        if(*pTemp == '-')
        {
            flag = 1;
            pTemp++;
        }
        
        do
        {
            if((*pTemp >= '0') && (*pTemp <= '9'))
            {
                sum *= 10;
                sum += (*pTemp - '0');
            }
            else
            {
                return -1;
            }
    
        }while(*++pTemp);
    
        return (flag == 0 ? sum : -sum);
    
    }

    数字变成字符串函数:

    int my_itoa(int val,char *ret)
    {
        char *pTemp = ret;
        int bits = 0;
    
        int flag = 0;
        
        if(val < 0)
        {
            flag = 1;
            val = 0-val;
    
            pTemp++;
            ret[0] = '-';
        }
        //printf("val  %d
    ",val);
        
        while(val)
        {
            (*pTemp++) = val%10 + '0';
            bits++;
            //printf("%d   
    ",val);
            val = val / 10;
    
        }
    
        *pTemp = '';
        
        //printf("%s    
    ",ret);
    
        //fan zhuan
        int i = 0;
        int temp = 0;
        for( i = 0; i < bits/2; i++)
        {
            temp = ret[i+1];
            ret[i+1] = ret[bits-i-1-1];
            ret[bits-i-1-1] = temp;
        }
    
        return 1;
    
    
    }

    上传完毕,欢迎园友指正,谢谢!

  • 相关阅读:
    Linux:password 与passphrase
    QT设置openCV头文件和链接动态库路径
    matlab对图像加入噪声的方法
    RGB到HSV的彩色空间变化 Matlab
    QImage与IplImage之间的转换
    iframe自适应高度(简单经典)兼容ie6ie9 ,firefox,opera,chrome
    转载:关于生成并发唯一性流水号的解决方案
    EXCEL表格纵横转换
    rdlc打印时多出空白页面(reportviewer)
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
  • 原文地址:https://www.cnblogs.com/xiaowenhu/p/3641380.html
Copyright © 2020-2023  润新知