博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见字符串函数的模拟实现
阅读量:4183 次
发布时间:2019-05-26

本文共 1812 字,大约阅读时间需要 6 分钟。

模拟实现strlen
int my_strlen(const char* str){    int count = 0;    while (*str)    {        count++;        str++;    }    return count;}
模拟实现strcpy
char* my_strcpy(char* dst, char* src){    assert(dst);    assert(src);    char *p = dst;    while ((*dst++ = *src++))    {        ;    }    return p;}
模拟实现strcat
char* my_strcat(char* dst, const char* src){    assert(src);    assert(dst);    char* p = dst;    while (*dst++)    {        dst++;    }    while ((*dst++ = *src++))    {        ;    }    return p;}
模拟实现strstr
char* my_strstr(const char*str1, const char* str2){    assert(str1);    assert(str2);    char* p1 = str1;    char* p2 = str2;    char* s = NULL;    if (*str2 == '\0')        return NULL;    while (*p1)    {        s = p1;        p2 = str2;        while (*s && *p2 && (*p2 == *s))        {            s++;            p2++;        }        if (*p2 == '\0')            return p1;        p1++;    }}
模拟实现strcmp
int my_strcmp(const char* str1, const char* str2){    int ret = 0;    while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str1)    {        ++str1;        ++str2;    }    if (ret < 0)        ret = -1;    if (ret>0)        ret = 1;    return ret;}
模拟实现memcpy
void* memcpy(void* dst,void* src,size_t n){    char* d = dst;    const char* s = src;    while (n--)    {        *d++ = *s++;    }    return dst;}
模拟实现memmove
void* memmove(void* dst, void* src, size_t n){    void* d = dst;    if (dst <= src || (char*)dst >= ((char*)src + n))    {        while (n--)        {            *(char*)dst = *(char*)src;            dst = (char*)dst + 1;            src = (char*)src + 1;        }    }    dst = (char*)dst + n - 1;    src= (char*)src + n - 1;     while (n--)    {        *(char*)dst = *(char*)src;        dst = (char*)dst - 1;        src = (char*)src- 1;    }    return d;}

转载地址:http://gtuoi.baihongyu.com/

你可能感兴趣的文章
MyEclipse中WEB项目加载mysql驱动方法
查看>>
常见编写JAVA报错总结
查看>>
org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver的区别
查看>>
UTF-8和GBK有什么区别
查看>>
增加MyEclipse分配内存的方法
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
leetcode Unique Paths II
查看>>
几个大数据的问题
查看>>
CareerCup Pots of gold game:看谁拿的钱多
查看>>
CarreerCup Sort Height
查看>>
CareerCup Sort an array in a special way
查看>>
CareerCup Find lexicographic minimum in a circular array 循环数组字典序
查看>>
CareerCup Cost of cutting wood
查看>>
Find the number of subsets such that the sum of numbers in the subset is a prime number
查看>>
CareerCup Binary Tree the Maximum of 人
查看>>
CareerCup Divide n cakes to k different people
查看>>
CareerCup Randomly return a node in a binary tree
查看>>