• MyStrlen, MyStrcmp, MyReverse,MyStrcpy,MyStrncpy,Merge,Change


    #include <iostream>
    #include <cstring>
    #include <cassert>
    using namespace std;
    
    int MyStrlen(char* a)  //strlen(a)
    {
        int i=0;
        while(a[i]!='')
        {
            i++;
        }
        return i;
    }
    
    int MyStrcmp(char* s, char* t)
    {
        assert(s!=NULL);
        assert(t!=NULL);
    
    
        while(*s && *t && (*s==*t))
        {
            s++;
            t++;
        }
        if(*s>*t)
        {
            return 1;
        }
        else if(*s<*t)
        {
            return -1;
        }
        else
        {
            return 0;
        }
    }
    
    void MyReverse(char* a)  //头尾交换
    {
        int size= MyStrlen(a);  // strlen(a);
        for(int i=0; i<size/2; i++)
        {
            char temp=a[i];
            a[i]=a[size-1-i];
            a[size-1-i]=temp;
        }
    }
    
    char* MyStrcpy(char* dest, char* src)
    {
        assert(dest!=NULL);
        assert(src!=NULL);
        int i=0;
        for(; src[i]!=''; i++)
        {
            dest[i]=src[i];
        }
        dest[i]='00';
    
    
        return dest;
    }
    
    char* MyStrncpy(char*dest, char* src, int pos)
    {
        assert(dest!=NULL);
        assert(src!=NULL);
    
    
        int SizeSrc=MyStrlen(src);
        if(SizeSrc>=pos)
        {
            int i=0;
            for(; i<pos; i++)
            {
                dest[i] =src[i];
            }
            return dest;
        }
        else
        {
            int i=0;
            for(;i<SizeSrc; i++)
            {
                dest[i]=src[i];
            }
            //dest[i]='';
            return dest;
        }
    }
    
    char* Merge(char* dest, char* src)//strcat
    {
        int i=0;
        int j=0;
        while(dest[i] !='')
        {
            i++;
        }
    
    
        while(src[j] !='')
        {
            dest[i] = src[j];
            i++;
            j++;
        }
        dest[i]='';
        return dest;
    }
    
    char* Change(char* a, int pos) // 指定位置前后对换位  pos=3 abc defg -> defg abc
    {
        char* temp=new char[pos+1];
    
    
        MyStrncpy(temp, a, pos);
        temp[pos]='';
    
    
        MyStrncpy(a,a+pos,7-pos);
    
    
        MyStrncpy(a+7-pos,temp,pos);
    
    
        delete [] temp;
        return a;
    }
    
    int main()
    {
        char a[]="abcdefg";
        cout<<"size of the char a[]: ";
        cout<<MyStrlen(a)<<endl;
        cout<<"Initial char a[]: ";
        cout<<a<<endl;
    
        MyReverse(a);
        cout<<"after reverse char a[]: ";
        cout<<a<<endl;
    
        cout<<"after shabi   dadong: ";
        cout<<Change(a,4)<<endl;
    
        return 0;
    }

    关注公众号 海量干货等你
  • 相关阅读:
    高并发系统中的常见问题
    区块链需要解决诸多问题
    什么是“区块链”技术
    github源码开源区块链浏览器
    JavaScript 内存
    行为驱动开发(BDD)
    Vue.js
    Net程序员学习Linux
    Mybatis数据操作
    Metatable和Metamethod(转)
  • 原文地址:https://www.cnblogs.com/sowhat1412/p/12734517.html
Copyright © 2020-2023  润新知