strcat(),strcpy(),strcmp(),strchr(),strstr()等函数的实现

原创 2017年07月28日 16:34:44

class Mystr{
    public:
        Mystr(void);
       ~Mystr(void);

void Mstrcat(char *str1, const char *str2);

void Mstrcpy(char *str1, const char *str2);

void Mstrncpy(char *str1, const char *str2, size_t num);
int Mstrcmp(const char *str1, const char *str2);
size_t Mstrlen(const char *str);
const char *Mstrchr(const char *str, int character);
const char *Mstrrchr(const char *str, int character);
const char *Mstrstr(const char *str1, const char *str2);
const char *Mstrpbrk(const char * str1, const char * str2);
    private:
char *Mstr;

};

Mystr:: Mystr(void)
    :Mstr(nullptr)
{
}

Mystr:: ~Mystr(void)
{
    if (Mstr)
        delete[] Mstr;
    Mstr = nullptr;
}

void Mystr::Mstrcat(char *str1, const char *str2)
{
    while(*str1++)
        ;
    --str1;
    while(*str1++ = *str2++)
        ;

    return;
}


void Mystr:: Mstrcpy(char *str1, const char *str2)
{
    while(*str1++ = *str2++)
        ;

    return;
}

void Mystr:: Mstrncpy(char *str1, const char *str2, size_t num)
{
    while(num-- && (*str1++ = *str2++))
        ;
    *str1 = '\0';

    return;
}

int Mystr:: Mstrcmp(const char *str1, const char *str2)
{
    while(*str1 || *str2){
        if(*str1 != *str2)
            return *str1 - *str2;
        ++str1;
        ++str2;
    }


    return 0;
}

size_t Mystr:: Mstrlen(const char *str)
{
    int m_len = 0;
    while(*str++ && ++m_len)
        ;

    return m_len;
}

const char* Mystr:: Mstrchr(const char *str, int character)
{
    char *pch = nullptr;
    while(*str){
        if(*str == character){
            return str;
        }
        ++str;
    }

    return nullptr;
}

const char* Mystr:: Mstrrchr(const char *str, int character)
{
    const char *pch = nullptr;
    while(*str){
        if(*str == character)
            pch = str;
        ++str;
    }


    return pch;
}

const char* Mystr:: Mstrstr(const char *str1, const char *str2)
{
    if(!str1 || !str2)
        return nullptr;
    for(; *str1; ++str1){
        const char *s1 = str1;
const char *s2 = str2;
        while(*s2 && *s1++ == *s2++)
            ;

        if(!*s2)

           return str1;
    }

    return nullptr;
}

const char* Mystr:: Mstrpbrk(const char * str1, const char * str2)
{
    if(!str1 || !str2)
return nullptr;
    while(*str1){
        const char *s2 = str2;
while(*s2){
         if(*str1 == *s2)
return str1;
         ++s2;
        }
        ++str1;
    }

    return nullptr;

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1、模拟实现strcpy char *my_strcpy( char *dest, const char *str) { assert(dest != NULL); assert(str != N...

模拟实现函数库中的各种常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove

————– 1模拟实现strcpy—————strcpy函数是将源字符串复制到目标字符串的函数strcpy函数的思路就是,它是一个字符串,有\0作为结束标志,那么可以用\0作为突破点和条件,具体代码如...

strlen,strcpy,strcat,strstr,strcmp,strchr函数的使用和注意事项

strcpy源码: char *strcpy(char *strDes, const char *strSrc) { assert((strDes != NULL) && (str...

c函数strcpy() ,strcat(),strcmp(), strlen(), strchr() ,strstr() 使用整理

1.strcpy() 功能:      字符串复制 头文件:   string.h 返回值类型:   char* C语言标准库函数strcpy,把从src地址开始且含有'\0...

(C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数

看到很多面试都会要求你写一些简单的字符串操作函数,这些函数看起来挺简单的,但是自己写的时候就会发现不少的问题。所以我自己把大部分的字符串操作函数都写了一遍,然后用了个测试程序来测试自己写的函数与库函数...

strcpy strlen memcpy strcat strcmp strstr strrev函数的实现代码

/* //strcpy函数的实现,注意命名要与原来的库函数有区别 #include #include #include using namespace std; char *mystrcp...

模拟实现strlen,strcpy,strcmp,strcat,strstr库函数

模拟实现strlen库函数 功能:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符'\0'。返回的长...

strlen strcmp strcat strcpy strncpy strstr strchar函数的实现

strlen的实现#include using namespace std; int my_strlen(const char * str) { int count = 0; while (*...

C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)

C语言库函数有很多,这里我针对几个字符串函数进行模拟实现: (1)strlen     字符串求长度函数 (2)strcpy     字符串拷贝函数 (3)strcat      字符串连接函数...

部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr

#include #include #include //////////////////////////////////////////////////// //Convert cha...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)